OSDN Git Service

Version 0.6.84, fix for :contains() & :lang().
[pettanr/clientJs.git] / 0.6.x / js / 04_net / 00_XNet.js
index a60ee42..88db71b 100644 (file)
@@ -1,30 +1,57 @@
 // TODO  onlineevent offlineevent, netspeed\r
 X.Net = {\r
 \r
-       get : function( url ){\r
-               return new X_NET_Queue( X_NET_TYPE_XHR, { get : url } );\r
+       xhrGet : function( url ){\r
+               return new X_NET_Queue( X_NET_TYPE_XHR, { method : 'GET', url : url } );\r
        },\r
        \r
-       post : function( url ){\r
-               return new X_NET_Queue( X_NET_TYPE_XHR, { post : url } );\r
+       xhrPost : function( url, data ){\r
+               return new X_NET_Queue( X_NET_TYPE_XHR, { method : 'POST', url : url, postbody : postbody } );\r
+       },\r
+       \r
+       formGet : function(){\r
+               \r
+       },\r
+       \r
+       formPost : function(){\r
+               \r
        },\r
        \r
        // TODO chashe\r
-       jsonp : function( url ){\r
+       // TODO iframe useful or not.\r
+       // TODO file: では http: は使えない\r
+       jsonp : function( url, useIframe ){\r
                return new X_NET_Queue( X_NET_TYPE_JSONP, url );\r
+       },\r
+       \r
+       image : function( url, useIframe ){\r
+               return new X_NET_Queue( X_NET_TYPE_IMAGE, url );\r
+       },\r
+       \r
+       amountQueue : function(){\r
+               return X_NET_QUEUE_LIST.length;\r
        }\r
 \r
 };\r
 \r
+\r
+var X_NET_IWrapper = function(){};\r
+       X_NET_IWrapper.prototype.load   = function(){};\r
+       X_NET_IWrapper.prototype.cancel = function(){};\r
+       X_NET_IWrapper.prototype.reset  = function(){};\r
+\r
+\r
 var X_NET_TYPE_XHR   = 1,\r
        X_NET_TYPE_JSONP = 2,\r
        X_NET_TYPE_FORM  = 3,\r
+       X_NET_TYPE_IMAGE = 4,\r
 \r
        X_NET_QUEUE_LIST = [],\r
 \r
        X_NET_XHRWrapper,\r
        X_NET_JSONPWrapper,\r
-       X_NET_FORMWrapper,\r
+       X_NET_FormWrapper,\r
+       X_NET_ImageWrapper,\r
 \r
        X_NET_currentWrapper,\r
        X_NET_currentQueue,\r
@@ -40,14 +67,21 @@ var X_NET_TYPE_XHR   = 1,
                                this.type = type;\r
                                this.data = data;                               \r
                                \r
+                               this.listen( X.Event.COMPLETE, X_NET_proxyDispatch );\r
+                               \r
                                X_NET_QUEUE_LIST[ X_NET_QUEUE_LIST.length ] = this;\r
                                !X_NET_currentQueue && X_NET_shiftQueue();\r
                        },\r
                        \r
+                       busy : function(){\r
+                               return this === X_NET_currentQueue && X_NET_currentWrapper._busy;\r
+                       },\r
+                       \r
                        cancel : function(){\r
                                var i = X_NET_QUEUE_LIST.indexOf( this );\r
                                if( i !== -1 ){\r
                                        X_NET_QUEUE_LIST.splice( i, 1 );\r
+                                       this.asyncDispatch( 0, { type : X.Event.CANCELED } );\r
                                } else\r
                                if( this === X_NET_currentQueue ){\r
                                        X_NET_currentWrapper.cancel();\r
@@ -58,14 +92,28 @@ var X_NET_TYPE_XHR   = 1,
 \r
 function X_NET_proxyDispatch( e ){\r
        switch( e.type ){\r
+               case X.Event.BEFORE_KILL_INSTANCE :\r
+                       break;\r
+               case X.Event.KILL_INSTANCE :\r
+                       break;                  \r
+               case X.Event.KILL_INSTANCE_CANCELED :\r
+                       break;\r
+               case X.Event.PROGRESS :\r
+                       console.log( 'q: ' + e.type );\r
+                       this.dispatch( e );\r
+                       break;\r
                case X.Event.SUCCESS :\r
                case X.Event.ERROR :\r
-                       this.asyncDispatch( 0, e );\r
-                       //this.kill();\r
-                       X_NET_shiftQueue();\r
+               case X.Event.CANCELED :\r
+                       console.log( 'q: ' + e.type );\r
+                       this.dispatch( e );\r
+                       this.asyncDispatch( 0, { type : X.Event.COMPLETE } );\r
                        break;\r
-               case X.Event.PROGRESS :\r
-                       this.dispatch( 0, e );\r
+               case X.Event.COMPLETE :\r
+                       console.log( 'complete. then kill()' );\r
+                       this.kill();\r
+                       X_NET_shiftQueue();\r
+                       break;          \r
        };\r
 };\r
 \r
@@ -74,13 +122,14 @@ function X_NET_shiftQueue(){
        \r
        if( X_NET_currentQueue ){\r
                if( X_NET_currentWrapper._busy ) return;\r
-               X_NET_currentWrapper.unlisten( [ X.Event.SUCCESS, X.Event.ERROR, X.Event.PROGRESS ], X_NET_currentQueue, X_NET_proxyDispatch );\r
-       };\r
-       \r
-       if( !X_NET_QUEUE_LIST.length ){\r
+               X_NET_currentWrapper\r
+                       .unlisten( [ X.Event.SUCCESS, X.Event.ERROR, X.Event.PROGRESS ], X_NET_currentQueue, X_NET_proxyDispatch )\r
+                       .reset();\r
                X_NET_currentQueue = X_NET_currentWrapper = null;\r
-               return;\r
        };\r
+       \r
+       if( !X_NET_QUEUE_LIST.length ) return;\r
+\r
        queue = X_NET_QUEUE_LIST.shift();\r
        \r
        switch( queue.type ){\r
@@ -91,7 +140,10 @@ function X_NET_shiftQueue(){
                        X_NET_currentWrapper = X_NET_JSONPWrapper;\r
                        break;\r
                case X_NET_TYPE_FORM :\r
-                       X_NET_currentWrapper = X_NET_FORMWrapper;\r
+                       X_NET_currentWrapper = X_NET_FormWrapper;\r
+                       break;\r
+               case X_NET_TYPE_IMAGE :\r
+                       X_NET_currentWrapper = X_NET_ImageWrapper;\r
                        break;\r
        };\r
        \r