def peer_status(task):
_Peer._lock.acquire()
if isinstance(task, Task):
# if there is another status_task, add or replace?
for peer in _Peer.peers.itervalues():
try:
task.send(PeerStatus(peer.location, peer.name, PeerStatus.Online))
except:
logger.debug(traceback.format_exc())
break
else:
_Peer.status_task = task
elif task is None:
_Peer.status_task = None
else:
logger.warning('invalid peer status task ignored')
_Peer._lock.release()
评论列表
文章目录