1 <!DOCTYPE html><html><head><title>Sencha Documentation Project</title><link rel="stylesheet" href="../reset.css" type="text/css"><link rel="stylesheet" href="../prettify.css" type="text/css"><link rel="stylesheet" href="../prettify_sa.css" type="text/css"><script type="text/javascript" src="../prettify.js"></script></head><body onload="prettyPrint()"><pre class="prettyprint"><pre><span id='Ext-direct.PollingProvider'>/**
2 </span> * @class Ext.direct.PollingProvider
3 * @extends Ext.direct.JsonProvider
5 * <p>Provides for repetitive polling of the server at distinct {@link #interval intervals}.
6 * The initial request for data originates from the client, and then is responded to by the
9 * <p>All configurations for the PollingProvider should be generated by the server-side
10 * API portion of the Ext.Direct stack.</p>
12 * <p>An instance of PollingProvider may be created directly via the new keyword or by simply
13 * specifying <tt>type = 'polling'</tt>. For example:</p>
14 * <pre><code>
15 var pollA = new Ext.direct.PollingProvider({
19 Ext.direct.Manager.addProvider(pollA);
22 Ext.direct.Manager.addProvider(
29 var pollB = Ext.direct.Manager.getProvider('pollB-provider');
30 * </code></pre>
32 Ext.define('Ext.direct.PollingProvider', {
34 /* Begin Definitions */
36 extend: 'Ext.direct.JsonProvider',
38 alias: 'direct.pollingprovider',
40 uses: ['Ext.direct.ExceptionEvent'],
42 requires: ['Ext.Ajax', 'Ext.util.DelayedTask'],
46 <span id='Ext-direct.PollingProvider-cfg-interval'> /**
47 </span> * @cfg {Number} interval
48 * How often to poll the server-side in milliseconds (defaults to <tt>3000</tt> - every
53 <span id='Ext-direct.PollingProvider-cfg-baseParams'> /**
54 </span> * @cfg {Object} baseParams An object containing properties which are to be sent as parameters
55 * on every polling request
58 <span id='Ext-direct.PollingProvider-cfg-url'> /**
59 </span> * @cfg {String/Function} url
60 * The url which the PollingProvider should contact with each request. This can also be
61 * an imported Ext.Direct method which will accept the baseParams as its only argument.
65 constructor : function(config){
66 this.callParent(arguments);
68 <span id='Ext-direct.PollingProvider-event-beforepoll'> /**
69 </span> * @event beforepoll
70 * Fired immediately before a poll takes place, an event handler can return false
71 * in order to cancel the poll.
72 * @param {Ext.direct.PollingProvider}
75 <span id='Ext-direct.PollingProvider-event-poll'> /**
77 * This event has not yet been implemented.
78 * @param {Ext.direct.PollingProvider}
85 isConnected: function(){
86 return !!this.pollTask;
89 <span id='Ext-direct.PollingProvider-method-connect'> /**
90 </span> * Connect to the server-side and begin the polling process. To handle each
91 * response subscribe to the data event.
94 var me = this, url = me.url;
96 if (url && !me.pollTask) {
97 me.pollTask = Ext.TaskManager.start({
99 if (me.fireEvent('beforepoll', me) !== false) {
100 if (Ext.isFunction(url)) {
107 params: me.baseParams
112 interval: me.interval,
115 me.fireEvent('connect', me);
118 Ext.Error.raise('Error initializing PollingProvider, no url configured.');
123 <span id='Ext-direct.PollingProvider-method-disconnect'> /**
124 </span> * Disconnect from the server-side and stop the polling process. The disconnect
125 * event will be fired on a successful disconnect.
127 disconnect: function(){
131 Ext.TaskManager.stop(me.pollTask);
133 me.fireEvent('disconnect', me);
138 onData: function(opt, success, response){
145 events = me.createEvents(response);
146 for (len = events.length; i < len; ++i) {
147 me.fireEvent('data', me, events[i]);
150 me.fireEvent('data', me, Ext.create('Ext.direct.ExceptionEvent', {
152 code: Ext.direct.Manager.self.exceptions.TRANSPORT,
153 message: 'Unable to connect to the server.',
158 });</pre></pre></body></html>