Skip to content

Commit 9061b0c

Browse files
committed
Add route in PeerMessage (next will use to de-loop)
1 parent 78e92d0 commit 9061b0c

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

Diff for: spanningtree.py

+9-5
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ def sendMessage(self, msg):
145145
"""
146146
verbose = msg.verbose
147147
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
148149
if msg.nodeid == self:
149150
if verbose: print "Message received at nodeid",msg.nodeid
150151
msg.hops += 1
@@ -391,7 +392,7 @@ def randnode(self):
391392
return self[randint(0, numnodes-1)]
392393

393394
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)
395396
res = self[source].sendMessage(msg)
396397
if verbose: print "Success",res.success
397398
#if not res.success: print "XXX@360",res.err
@@ -463,19 +464,22 @@ class PeerMessage(object):
463464
"""
464465
pass
465466

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
468470
self.hops = hops
469471
self.tried = tried or PeerSet() # Initialize if unset
470472
self.verbose = verbose
471473
self.payload = payload
472474
self.maxhops = maxhops
475+
self.route = route or []
473476

474477
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)
476480

477481
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, )
479483

480484
class PeerResponse(object):
481485
"""

0 commit comments

Comments
 (0)