[mnet-devel] patch: enable download backoff

Zooko O'Whielacronx zooko at zooko.com
Tue Feb 17 16:57:15 GMT 2004


This is a change to BlockWrangler to provide an optional "delay" argument to 
backoff stalled downloads.

It almost certainly can't hurt, and it is required for the patch that is coming 
next.  (Although of course you might not want to accept the patch that is coming 
next...)


--- common/BlockWrangler.py	7 Dec 2003 17:35:50 -0000	1.94
+++ common/BlockWrangler.py	17 Feb 2004 16:41:35 -0000
@@ -282,7 +283,7 @@ class BlockWrangler(nummedobj.NummedObj)
 
     ### The following methods are for strategies to use.
     ### The following methods are for strategies to use.  (Commands to take action.)
-    def look_for_blocks_on_peer(self, peerId, blockIds):
+    def look_for_blocks_on_peer(self, peerId, blockIds, nextdelay=0):
         """
         @precondition: blockIds must be a non-empty sequence.: (type(blockIds) in (types.TupleType, types.ListType,)) and (len(blockIds) > 0): "blockIds: %s :: %s" % tuple(map(humanreadable.hr, (blockIds, type(blockIds),)))
         """
@@ -291,7 +292,7 @@ class BlockWrangler(nummedobj.NummedObj)
 
         assert self.data._assert_consistency()
 
-        def _handle_look_for_blocks_result(widget, outcome, failure_reason=None, queryblockIds=blockIds, peerId=peerId, self=self):
+        def _handle_look_for_blocks_result(widget, outcome, failure_reason=None, queryblockIds=blockIds, peerId=peerId, self=self, nextdelay=nextdelay):
             assert self.data._assert_consistency()
             if not failure_reason:
                 assert type(outcome) in (types.ListType, types.TupleType,), "outcome: %s :: %s" % tuple(map(humanreadable.hr, (outcome, type(outcome),)))
@@ -303,9 +304,9 @@ class BlockWrangler(nummedobj.NummedObj)
                 self.data.remove_Ids_of_located_blocks(peerId, blockIds=queryblockIds)
 
             # Tell the strategy to wake up -- there are new results to consider!  (Even failure is a new result to consider.)
-            self.strategy.schedule_event()
+            self.strategy.schedule_event(delay=nextdelay)
 
         def _handle_timely_look_for_blocks_result(widget, outcome, failure_reason=None, _handle_look_for_blocks_result=_handle_look_for_blocks_result, peerId=peerId, self=self):
             """


-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click
_______________________________________________
mnet-devel mailing list
mnet-devel at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mnet-devel




More information about the Mnet-devel mailing list