def kill(me, peername):
"""Remove PEER from the peers being watched by the Pinger."""
- del me._peers[peername]
+ try: del me._peers[peername]
+ except KeyError: pass
return me
def rescan(me, startup):
"""
return me._peers.keys()
+ def find(me, name):
+ """Return the PingPeer with the given name."""
+ return me._peers[name]
+
###--------------------------------------------------------------------------
### New connections.
"""
kick NAME: Force a new connection attempt for the NAMEd peer.
"""
- if name not in pinger.adopted():
- raise T.TripeJobError('peer-not-adopted', name)
+ try: pp = pinger.find(name)
+ except KeyError: raise T.TripeJobError('peer-not-adopted', name)
try: peer = Peer(name)
except KeyError: raise T.TripeJobError('unknown-peer', name)
- T.spawn(run_connect, peer, peer.get('connect'))
+ conn = peer.get('connect', None)
+ if conn: T.spawn(run_connect, peer, peer.get('connect'))
+ else: T.spawn(lambda p: S.forcekx(p.name), peer)
def cmd_adopted():
"""