--- /dev/null
+<html>\r
+<head>\r
+ <title>The source code</title>\r
+ <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />\r
+ <script type="text/javascript" src="../resources/prettify/prettify.js"></script>\r
+</head>\r
+<body onload="prettyPrint();">\r
+ <pre class="prettyprint lang-js"><div id="cls-Ext.direct.PollingProvider"></div>/**\r
+ * @class Ext.direct.PollingProvider\r
+ * @extends Ext.direct.JsonProvider\r
+ *\r
+ * <p>Provides for repetitive polling of the server at distinct {@link #interval intervals}.\r
+ * The initial request for data originates from the client, and then is responded to by the\r
+ * server.</p>\r
+ * \r
+ * <p>All configurations for the PollingProvider should be generated by the server-side\r
+ * API portion of the Ext.Direct stack.</p>\r
+ *\r
+ * <p>An instance of PollingProvider may be created directly via the new keyword or by simply\r
+ * specifying <tt>type = 'polling'</tt>. For example:</p>\r
+ * <pre><code>\r
+var pollA = new Ext.direct.PollingProvider({\r
+ type:'polling',\r
+ url: 'php/pollA.php',\r
+});\r
+Ext.Direct.addProvider(pollA);\r
+pollA.disconnect();\r
+\r
+Ext.Direct.addProvider(\r
+ {\r
+ type:'polling',\r
+ url: 'php/pollB.php',\r
+ id: 'pollB-provider'\r
+ }\r
+);\r
+var pollB = Ext.Direct.getProvider('pollB-provider');\r
+ * </code></pre>\r
+ */\r
+Ext.direct.PollingProvider = Ext.extend(Ext.direct.JsonProvider, {\r
+ <div id="cfg-Ext.direct.PollingProvider-priority"></div>/**\r
+ * @cfg {Number} priority\r
+ * Priority of the request (defaults to <tt>3</tt>). See {@link Ext.direct.Provider#priority}.\r
+ */\r
+ // override default priority\r
+ priority: 3,\r
+ \r
+ <div id="cfg-Ext.direct.PollingProvider-interval"></div>/**\r
+ * @cfg {Number} interval\r
+ * How often to poll the server-side in milliseconds (defaults to <tt>3000</tt> - every\r
+ * 3 seconds).\r
+ */\r
+ interval: 3000,\r
+\r
+ <div id="cfg-Ext.direct.PollingProvider-baseParams"></div>/**\r
+ * @cfg {Object} baseParams An object containing properties which are to be sent as parameters\r
+ * on every polling request\r
+ */\r
+ \r
+ <div id="cfg-Ext.direct.PollingProvider-url"></div>/**\r
+ * @cfg {String/Function} url\r
+ * The url which the PollingProvider should contact with each request. This can also be\r
+ * an imported Ext.Direct method which will accept the baseParams as its only argument.\r
+ */\r
+\r
+ // private\r
+ constructor : function(config){\r
+ Ext.direct.PollingProvider.superclass.constructor.call(this, config);\r
+ this.addEvents(\r
+ <div id="event-Ext.direct.PollingProvider-beforepoll"></div>/**\r
+ * @event beforepoll\r
+ * Fired immediately before a poll takes place, an event handler can return false\r
+ * in order to cancel the poll.\r
+ * @param {Ext.direct.PollingProvider}\r
+ */\r
+ 'beforepoll', \r
+ <div id="event-Ext.direct.PollingProvider-poll"></div>/**\r
+ * @event poll\r
+ * This event has not yet been implemented.\r
+ * @param {Ext.direct.PollingProvider}\r
+ */\r
+ 'poll'\r
+ );\r
+ },\r
+\r
+ // inherited\r
+ isConnected: function(){\r
+ return !!this.pollTask;\r
+ },\r
+\r
+ <div id="method-Ext.direct.PollingProvider-connect"></div>/**\r
+ * Connect to the server-side and begin the polling process. To handle each\r
+ * response subscribe to the data event.\r
+ */\r
+ connect: function(){\r
+ if(this.url && !this.pollTask){\r
+ this.pollTask = Ext.TaskMgr.start({\r
+ run: function(){\r
+ if(this.fireEvent('beforepoll', this) !== false){\r
+ if(typeof this.url == 'function'){\r
+ this.url(this.baseParams);\r
+ }else{\r
+ Ext.Ajax.request({\r
+ url: this.url,\r
+ callback: this.onData,\r
+ scope: this,\r
+ params: this.baseParams\r
+ });\r
+ }\r
+ }\r
+ },\r
+ interval: this.interval,\r
+ scope: this\r
+ });\r
+ this.fireEvent('connect', this);\r
+ }else if(!this.url){\r
+ throw 'Error initializing PollingProvider, no url configured.';\r
+ }\r
+ },\r
+\r
+ <div id="method-Ext.direct.PollingProvider-disconnect"></div>/**\r
+ * Disconnect from the server-side and stop the polling process. The disconnect\r
+ * event will be fired on a successful disconnect.\r
+ */\r
+ disconnect: function(){\r
+ if(this.pollTask){\r
+ Ext.TaskMgr.stop(this.pollTask);\r
+ delete this.pollTask;\r
+ this.fireEvent('disconnect', this);\r
+ }\r
+ },\r
+\r
+ // private\r
+ onData: function(opt, success, xhr){\r
+ if(success){\r
+ var events = this.getEvents(xhr);\r
+ for(var i = 0, len = events.length; i < len; i++){\r
+ var e = events[i];\r
+ this.fireEvent('data', this, e);\r
+ }\r
+ }else{\r
+ var e = new Ext.Direct.ExceptionEvent({\r
+ data: e,\r
+ code: Ext.Direct.exceptions.TRANSPORT,\r
+ message: 'Unable to connect to the server.',\r
+ xhr: xhr\r
+ });\r
+ this.fireEvent('data', this, e);\r
+ }\r
+ }\r
+});\r
+\r
+Ext.Direct.PROVIDERS['polling'] = Ext.direct.PollingProvider;</pre> \r
+</body>\r
+</html>
\ No newline at end of file