Slightly easier to keep track of what's going on.
installed, and again by the dbwatcher coroutine when it detects a change
to the database.
"""
installed, and again by the dbwatcher coroutine when it detects a change
to the database.
"""
+ if T._debug: print '# rescan peers'
correct = {}
for peer in S.list():
try:
correct = {}
for peer in S.list():
try:
except KeyError:
continue
if boolean(info, 'watch', False):
except KeyError:
continue
if boolean(info, 'watch', False):
+ if T._debug: print '# interesting peer %s' % peer
correct[peer] = info
for peer, obj in me._peers.items():
if peer in correct:
obj.update(correct[peer])
else:
correct[peer] = info
for peer, obj in me._peers.items():
if peer in correct:
obj.update(correct[peer])
else:
+ if T._debug: print '# peer %s vanished' % peer
del me._peers[peer]
for peer, info in correct.iteritems():
if peer not in me._peers:
if startup:
del me._peers[peer]
for peer, info in correct.iteritems():
if peer not in me._peers:
if startup:
+ if T._debug: print '# setting up peer %s' % peer
ifname = S.ifname(peer)
addr = S.addr(peer)
T.defer(addpeer, info, peer, ifname, *addr)
else:
ifname = S.ifname(peer)
addr = S.addr(peer)
T.defer(addpeer, info, peer, ifname, *addr)
else:
+ if T._debug: print '# adopting new peer %s' % peer
me.add(peer, info, True)
return me
me.add(peer, info, True)
return me