Author: mrogers
Date: 2006-11-17 08:29:44 +0000 (Fri, 17 Nov 2006)
New Revision: 10968

Modified:
   trunk/apps/load-balancing-sims/phase7/sim/handlers/ChkInsertHandler.java
   trunk/apps/load-balancing-sims/phase7/sim/handlers/ChkRequestHandler.java
   trunk/apps/load-balancing-sims/phase7/sim/handlers/MessageHandler.java
   trunk/apps/load-balancing-sims/phase7/sim/handlers/SskInsertHandler.java
   trunk/apps/load-balancing-sims/phase7/sim/handlers/SskRequestHandler.java
Log:
RejectedOverloads can arrive from any peer, due to timeouts (which makes the 
protocol kind of difficult to reason about)

Modified: 
trunk/apps/load-balancing-sims/phase7/sim/handlers/ChkInsertHandler.java
===================================================================
--- trunk/apps/load-balancing-sims/phase7/sim/handlers/ChkInsertHandler.java    
2006-11-17 05:00:47 UTC (rev 10967)
+++ trunk/apps/load-balancing-sims/phase7/sim/handlers/ChkInsertHandler.java    
2006-11-17 08:29:44 UTC (rev 10968)
@@ -27,7 +27,9 @@

        public void handleMessage (Message m, Peer src)
        {
-               if (src == prev) {
+               if (m instanceof RejectedOverload)
+                       handleOverload ((RejectedOverload) m, src);
+               else if (src == prev) {
                        if (m instanceof DataInsert)
                                handleDataInsert ((DataInsert) m);
                        else if (m instanceof Block)
@@ -39,8 +41,6 @@
                                handleAccepted ((Accepted) m);
                        else if (m instanceof RejectedLoop)
                                handleRejectedLoop ((RejectedLoop) m);
-                       else if (m instanceof RejectedOverload)
-                               handleRejectedOverload ((RejectedOverload) m);
                        else if (m instanceof RouteNotFound)
                                handleRouteNotFound ((RouteNotFound) m);
                        else if (m instanceof InsertReply)

Modified: 
trunk/apps/load-balancing-sims/phase7/sim/handlers/ChkRequestHandler.java
===================================================================
--- trunk/apps/load-balancing-sims/phase7/sim/handlers/ChkRequestHandler.java   
2006-11-17 05:00:47 UTC (rev 10967)
+++ trunk/apps/load-balancing-sims/phase7/sim/handlers/ChkRequestHandler.java   
2006-11-17 08:29:44 UTC (rev 10968)
@@ -17,16 +17,14 @@

        public void handleMessage (Message m, Peer src)
        {
-               if (src != next) {
+               if (m instanceof RejectedOverload)
+                       handleOverload ((RejectedOverload) m, src);
+               else if (src != next)
                        node.log ("unexpected source for " + m);
-                       return;
-               }
-               if (m instanceof Accepted)
+               else if (m instanceof Accepted)
                        handleAccepted ((Accepted) m);
                else if (m instanceof RejectedLoop)
                        handleRejectedLoop ((RejectedLoop) m);
-               else if (m instanceof RejectedOverload)
-                       handleRejectedOverload ((RejectedOverload) m);
                else if (m instanceof RouteNotFound)
                        handleRouteNotFound ((RouteNotFound) m);
                else if (m instanceof DataNotFound)

Modified: trunk/apps/load-balancing-sims/phase7/sim/handlers/MessageHandler.java
===================================================================
--- trunk/apps/load-balancing-sims/phase7/sim/handlers/MessageHandler.java      
2006-11-17 05:00:47 UTC (rev 10967)
+++ trunk/apps/load-balancing-sims/phase7/sim/handlers/MessageHandler.java      
2006-11-17 08:29:44 UTC (rev 10968)
@@ -121,14 +121,12 @@
                forwardSearch();
        }

-       protected void handleRejectedOverload (RejectedOverload ro)
+       protected void handleOverload (RejectedOverload ro, Peer src)
        {
-               if (searchState != SENT) node.log (ro + " out of order");
                if (ro.local) {
                        ro.local = false;
-                       // Back off and try another peer
-                       next.localRejectedOverload();
-                       forwardSearch();
+                       src.localRejectedOverload(); // Back off
+                       if (src == next) forwardSearch(); // Try another peer
                }
                if (prev == null) {
                        // FIXME: throttle

Modified: 
trunk/apps/load-balancing-sims/phase7/sim/handlers/SskInsertHandler.java
===================================================================
--- trunk/apps/load-balancing-sims/phase7/sim/handlers/SskInsertHandler.java    
2006-11-17 05:00:47 UTC (rev 10967)
+++ trunk/apps/load-balancing-sims/phase7/sim/handlers/SskInsertHandler.java    
2006-11-17 08:29:44 UTC (rev 10968)
@@ -47,7 +47,9 @@

        public void handleMessage (Message m, Peer src)
        {
-               if (src == prev) {
+               if (m instanceof RejectedOverload)
+                       handleOverload ((RejectedOverload) m, src);
+               else if (src == prev) {
                        if (m instanceof SskPubKey)
                                handleSskPubKey ((SskPubKey) m);
                        else node.log ("unexpected type for " + m);
@@ -57,8 +59,6 @@
                                handleSskAccepted ((SskAccepted) m);
                        else if (m instanceof RejectedLoop)
                                handleRejectedLoop ((RejectedLoop) m);
-                       else if (m instanceof RejectedOverload)
-                               handleRejectedOverload ((RejectedOverload) m);
                        else if (m instanceof RouteNotFound)
                                handleRouteNotFound ((RouteNotFound) m);
                        else if (m instanceof SskDataFound)

Modified: 
trunk/apps/load-balancing-sims/phase7/sim/handlers/SskRequestHandler.java
===================================================================
--- trunk/apps/load-balancing-sims/phase7/sim/handlers/SskRequestHandler.java   
2006-11-17 05:00:47 UTC (rev 10967)
+++ trunk/apps/load-balancing-sims/phase7/sim/handlers/SskRequestHandler.java   
2006-11-17 08:29:44 UTC (rev 10968)
@@ -20,16 +20,14 @@

        public void handleMessage (Message m, Peer src)
        {
-               if (src != next) {
+               if (m instanceof RejectedOverload)
+                       handleOverload ((RejectedOverload) m, src);
+               else if (src != next)
                        node.log ("unexpected source for " + m);
-                       return;
-               }
-               if (m instanceof Accepted)
+               else if (m instanceof Accepted)
                        handleAccepted ((Accepted) m);
                else if (m instanceof RejectedLoop)
                        handleRejectedLoop ((RejectedLoop) m);
-               else if (m instanceof RejectedOverload)
-                       handleRejectedOverload ((RejectedOverload) m);
                else if (m instanceof RouteNotFound)
                        handleRouteNotFound ((RouteNotFound) m);
                else if (m instanceof DataNotFound)


Reply via email to