-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi,

I worked on the attached patch for jpoker, to implement sendPacket retry
on various 12xxx xhr error.

Feel free to review & apply it.

Please note that it may affect the ordering of outgoing packets because
additional sendPacket will append instead of prepend packet to the ajax
queue.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkk6px0ACgkQZmEdV9SHoe553QCeMPZBG7W/5TSbr2JW5oQF29SQ
UqoAnivV9IizD2PdGepsLSko6jJFaqug
=CBOE
-----END PGP SIGNATURE-----
diff -r 9e000a847138 jpoker/js/jquery.jpoker.js
--- a/jpoker/js/jquery.jpoker.js        Fri Dec 05 16:08:04 2008 +0000
+++ b/jpoker/js/jquery.jpoker.js        Sat Dec 06 12:57:38 2008 +0000
@@ -598,6 +598,7 @@
             dequeueFrequency: 100,
             pingFrequency: 6000,
             timeout: 30000,
+           retryCount: 10,
             clearTimeout: function(id) { return window.clearTimeout(id); },
             setTimeout: function(cb, delay) { return window.setTimeout(cb, 
delay); },
             ajax: function(o) { return jQuery.ajax(o); },
@@ -787,7 +788,7 @@
                 }
             },
 
-            sendPacket: function(packet) {
+            sendPacket: function(packet, retry) {
                 var $this = this;
                 var json_data = JSON.stringify(packet);
                 if(jpoker.verbose > 0) {
@@ -813,11 +814,25 @@
                             $this.setConnectionState('disconnected');
                             $this.reset();
                         } else {
-                            $this.error({ xhr: xhr,
-                                          status: status,
-                                          url: this.url,
-                                          error: error
-                                });
+                           switch (xhr.status) {
+                           case 12152:
+                           case 12030:
+                           case 12031:
+                           if (!retry) {
+                               retry = 0;
+                           }
+                           if (retry < $this.retryCount)  {
+                               $this.sendPacket(packet, ++retry);
+                               return;
+                           }
+                           error = 'retry count exceeded: ' + retry;
+                           break;
+                           }
+                           $this.error({ xhr: xhr,
+                                         status: status,
+                                         url: this.url,
+                                         error: error
+                               });
                         }
                     }
                 };
diff -r 9e000a847138 jpoker/js/test-jpoker.js
--- a/jpoker/js/test-jpoker.js  Fri Dec 05 16:08:04 2008 +0000
+++ b/jpoker/js/test-jpoker.js  Sat Dec 06 12:57:38 2008 +0000
@@ -1965,6 +1965,67 @@
         ActiveXObject.defaults.status = 500;
         self.sendPacket({type: 'type'});
         ActiveXObject.defaults.status = 200;
+    });
+
+test("jpoker.connection:sendPacket retry 12152", function(){
+        expect(1);
+        stop();
+        var self = new jpoker.connection();        
+       var sendPacket = self.sendPacket;
+       self.sendPacket = function(packet) {
+           equals(packet.type, 'type', 'retry');
+           start();
+       };
+        ActiveXObject.defaults.status = 12152;
+        sendPacket.apply(self, [{type: 'type'}]);
+        ActiveXObject.defaults.status = 200;
+    });
+
+test("jpoker.connection:sendPacket retry 12030", function(){
+        expect(1);
+        stop();
+        var self = new jpoker.connection();        
+       var sendPacket = self.sendPacket;
+       self.sendPacket = function(packet) {
+           equals(packet.type, 'type', 'retry');
+           start();
+       };
+        ActiveXObject.defaults.status = 12030;
+        sendPacket.apply(self, [{type: 'type'}]);
+        ActiveXObject.defaults.status = 200;
+    });
+
+test("jpoker.connection:sendPacket retry 12031", function(){
+        expect(1);
+        stop();
+        var self = new jpoker.connection();        
+       var sendPacket = self.sendPacket;
+       self.sendPacket = function(packet) {
+           equals(packet.type, 'type', 'retry');
+           start();
+       };
+        ActiveXObject.defaults.status = 12031;
+        sendPacket.apply(self, [{type: 'type'}]);
+        ActiveXObject.defaults.status = 200;
+    });
+
+test("jpoker.connection:sendPacket retry count", function(){
+        expect(3);
+        stop();
+        var self = new jpoker.connection();
+       self.retryCount = 42;
+        
+        var error = jpoker.error;
+        jpoker.error = function(reason) {
+            jpoker.error = error;
+            equals(reason.xhr.status, 12031);
+           ok(reason.error.indexOf('retry') >= 0, 'retry error');
+           ok(reason.error.indexOf(self.retryCount) >= 0, 'retryCount');
+           ActiveXObject.defaults.status = 200;
+            start();
+        };
+        ActiveXObject.defaults.status = 12031;
+        self.sendPacket({type: 'type'});
     });
 
 test("jpoker.connection:sendPacket timeout", function(){
_______________________________________________
Pokersource-users mailing list
[email protected]
https://mail.gna.org/listinfo/pokersource-users

Reply via email to