@@ -145,6 +145,7 @@ def sendMessage(self, msg):
145
145
"""
146
146
verbose = msg .verbose
147
147
hops = msg .hops # Keep a local copy of msg hops at call, don't increment as keep trying to send
148
+ msg .route .append (self .nodeid ) # Append self to route before sending on, or responding
148
149
if msg .nodeid == self :
149
150
if verbose : print "Message received at nodeid" ,msg .nodeid
150
151
msg .hops += 1
@@ -391,7 +392,7 @@ def randnode(self):
391
392
return self [randint (0 , numnodes - 1 )]
392
393
393
394
def findroute (self , source , destn , maxhops = 0 , verbose = False ):
394
- msg = PeerMessage (nodeid = self [destn ]. nodeid , hops = 0 , tried = None , verbose = verbose )
395
+ msg = PeerMessage (sourceid = self [ source ], nodeid = self [destn ], hops = 0 , tried = None , verbose = verbose )
395
396
res = self [source ].sendMessage (msg )
396
397
if verbose : print "Success" ,res .success
397
398
#if not res.success: print "XXX@360",res.err
@@ -463,19 +464,22 @@ class PeerMessage(object):
463
464
"""
464
465
pass
465
466
466
- def __init__ (self , nodeid = None , hops = 0 , tried = None , verbose = False , maxhops = 100 , payload = None ):
467
- self .nodeid = nodeid
467
+ def __init__ (self , sourceid = None , route = None , nodeid = None , hops = 0 , tried = None , verbose = False , maxhops = 100 , payload = None ):
468
+ self .sourceid = sourceid .nodeid if isinstance (sourceid , (Node , Peer )) else sourceid
469
+ self .nodeid = nodeid .nodeid if isinstance (sourceid , (Node , Peer )) else nodeid
468
470
self .hops = hops
469
471
self .tried = tried or PeerSet () # Initialize if unset
470
472
self .verbose = verbose
471
473
self .payload = payload
472
474
self .maxhops = maxhops
475
+ self .route = route or []
473
476
474
477
def copy (self ):
475
- return PeerMessage (nodeid = self .nodeid , hops = self .hops , tried = self .tried .copy (), verbose = self .verbose , maxhops = self .maxhops , payload = self .payload )
478
+ return PeerMessage (sourceid = self .sourceid , route = self .route , nodeid = self .nodeid , hops = self .hops , tried = self .tried .copy (),
479
+ verbose = self .verbose , maxhops = self .maxhops , payload = self .payload )
476
480
477
481
def debugprint (self , level = 2 ):
478
- print "To: %d Hops=%d maxhops=%d Tried=%s" % (self .nodeid , self .hops , self .maxhops , self .tried )
482
+ print "To: %d Hops=%d maxhops=%d Route=%s Tried=%s" % (self .nodeid , self .hops , self .maxhops , self .route , self . tried , )
479
483
480
484
class PeerResponse (object ):
481
485
"""
0 commit comments