Upgrade to ExtJS 3.1.0 - Released 12/16/2009
[extjs.git] / src / direct / Provider.js
1 /*!
2  * Ext JS Library 3.1.0
3  * Copyright(c) 2006-2009 Ext JS, LLC
4  * licensing@extjs.com
5  * http://www.extjs.com/license
6  */
7 /**\r
8  * @class Ext.direct.Provider\r
9  * @extends Ext.util.Observable\r
10  * <p>Ext.direct.Provider is an abstract class meant to be extended.</p>\r
11  * \r
12  * <p>For example ExtJs implements the following subclasses:</p>\r
13  * <pre><code>\r
14 Provider\r
15 |\r
16 +---{@link Ext.direct.JsonProvider JsonProvider} \r
17     |\r
18     +---{@link Ext.direct.PollingProvider PollingProvider}   \r
19     |\r
20     +---{@link Ext.direct.RemotingProvider RemotingProvider}   \r
21  * </code></pre>\r
22  * @abstract\r
23  */\r
24 Ext.direct.Provider = Ext.extend(Ext.util.Observable, {    \r
25     /**\r
26      * @cfg {String} id\r
27      * The unique id of the provider (defaults to an {@link Ext#id auto-assigned id}).\r
28      * You should assign an id if you need to be able to access the provider later and you do\r
29      * not have an object reference available, for example:\r
30      * <pre><code>\r
31 Ext.Direct.addProvider(\r
32     {\r
33         type: 'polling',\r
34         url:  'php/poll.php',\r
35         id:   'poll-provider'\r
36     }\r
37 );\r
38      \r
39 var p = {@link Ext.Direct Ext.Direct}.{@link Ext.Direct#getProvider getProvider}('poll-provider');\r
40 p.disconnect();\r
41      * </code></pre>\r
42      */\r
43         \r
44     /**\r
45      * @cfg {Number} priority\r
46      * Priority of the request. Lower is higher priority, <tt>0</tt> means "duplex" (always on).\r
47      * All Providers default to <tt>1</tt> except for PollingProvider which defaults to <tt>3</tt>.\r
48      */    \r
49     priority: 1,\r
50 \r
51     /**\r
52      * @cfg {String} type\r
53      * <b>Required</b>, <tt>undefined</tt> by default.  The <tt>type</tt> of provider specified\r
54      * to {@link Ext.Direct Ext.Direct}.{@link Ext.Direct#addProvider addProvider} to create a\r
55      * new Provider. Acceptable values by default are:<div class="mdetail-params"><ul>\r
56      * <li><b><tt>polling</tt></b> : {@link Ext.direct.PollingProvider PollingProvider}</li>\r
57      * <li><b><tt>remoting</tt></b> : {@link Ext.direct.RemotingProvider RemotingProvider}</li>\r
58      * </ul></div>\r
59      */    \r
60  \r
61     // private\r
62     constructor : function(config){\r
63         Ext.apply(this, config);\r
64         this.addEvents(\r
65             /**\r
66              * @event connect\r
67              * Fires when the Provider connects to the server-side\r
68              * @param {Ext.direct.Provider} provider The {@link Ext.direct.Provider Provider}.\r
69              */            \r
70             'connect',\r
71             /**\r
72              * @event disconnect\r
73              * Fires when the Provider disconnects from the server-side\r
74              * @param {Ext.direct.Provider} provider The {@link Ext.direct.Provider Provider}.\r
75              */            \r
76             'disconnect',\r
77             /**\r
78              * @event data\r
79              * Fires when the Provider receives data from the server-side\r
80              * @param {Ext.direct.Provider} provider The {@link Ext.direct.Provider Provider}.\r
81              * @param {event} e The {@link Ext.Direct#eventTypes Ext.Direct.Event type} that occurred.\r
82              */            \r
83             'data',\r
84             /**\r
85              * @event exception\r
86              * Fires when the Provider receives an exception from the server-side\r
87              */                        \r
88             'exception'\r
89         );\r
90         Ext.direct.Provider.superclass.constructor.call(this, config);\r
91     },\r
92 \r
93     /**\r
94      * Returns whether or not the server-side is currently connected.\r
95      * Abstract method for subclasses to implement.\r
96      */\r
97     isConnected: function(){\r
98         return false;\r
99     },\r
100 \r
101     /**\r
102      * Abstract methods for subclasses to implement.\r
103      */\r
104     connect: Ext.emptyFn,\r
105     \r
106     /**\r
107      * Abstract methods for subclasses to implement.\r
108      */\r
109     disconnect: Ext.emptyFn\r
110 });\r