You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by hs...@apache.org on 2012/01/26 00:08:59 UTC

svn commit: r1235983 - /shindig/trunk/features/src/main/javascript/features/rpc/flash.transport.js

Author: hsaputra
Date: Wed Jan 25 23:08:58 2012
New Revision: 1235983

URL: http://svn.apache.org/viewvc?rev=1235983&view=rev
Log:
SHINDIG-1678 The flash transport to support RPC for IE7 has problem with multiple gadgets in a single container. CR: https://reviews.apache.org/r/3566

Modified:
    shindig/trunk/features/src/main/javascript/features/rpc/flash.transport.js

Modified: shindig/trunk/features/src/main/javascript/features/rpc/flash.transport.js
URL: http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/rpc/flash.transport.js?rev=1235983&r1=1235982&r2=1235983&view=diff
==============================================================================
--- shindig/trunk/features/src/main/javascript/features/rpc/flash.transport.js (original)
+++ shindig/trunk/features/src/main/javascript/features/rpc/flash.transport.js Wed Jan 25 23:08:58 2012
@@ -41,7 +41,11 @@ if (!gadgets.rpctx.flash) {  // make lib
 
     var LOADER_TIMEOUT_MS = 100;
     var MAX_LOADER_RETRIES = 50;
+
     var pendingHandshakes = [];
+    var flushHandshakesHandle = null;
+    var FLUSH_HANDSHAKES_TIMEOUT_MS = 500;
+
     var setupHandle = null;
     var setupAttempts = 0;
 
@@ -148,6 +152,12 @@ if (!gadgets.rpctx.flash) {  // make lib
           var targetId = shake.targetId;
           relayHandle['setup'](shake.token, getChannelId(targetId), getRoleId(targetId));
         }
+        if (flushHandshakesHandle !== null) {
+          window.clearTimeout(flushHandshakesHandle);
+          flushHandshakesHandle = null;
+        }
+      } else if (flushHandshakesHandle === null && pendingHandshakes.length > 0) {
+        flushHandshakesHandle = window.setTimeout(flushHandshakes, FLUSH_HANDSHAKES_TIMEOUT_MS);
       }
     }
 
@@ -238,6 +248,8 @@ if (!gadgets.rpctx.flash) {  // make lib
         if (relayHandle === null && setupHandle === null) {
           setupHandle = window.setTimeout(relayLoader, LOADER_TIMEOUT_MS);
         }
+        // Lets try to flush any registered handshakes
+        flushHandshakes();
         return true;
       },