Пример #1
0
 def __init__(self, loop: asyncio.AbstractEventLoop, peer_manager: 'PeerManager', node_id: bytes, external_ip: str,
              udp_port: int, peer_port: int, rpc_timeout: float = constants.rpc_timeout,
              split_buckets_under_index: int = constants.split_buckets_under_index):
     self.peer_manager = peer_manager
     self.loop = loop
     self.node_id = node_id
     self.external_ip = external_ip
     self.udp_port = udp_port
     self.peer_port = peer_port
     self.is_seed_node = False
     self.partial_messages: typing.Dict[bytes, typing.Dict[bytes, bytes]] = {}
     self.sent_messages: typing.Dict[bytes, typing.Tuple['KademliaPeer', asyncio.Future, RequestDatagram]] = {}
     self.protocol_version = constants.protocol_version
     self.started_listening_time = 0
     self.transport: DatagramTransport = None
     self.old_token_secret = constants.generate_id()
     self.token_secret = constants.generate_id()
     self.routing_table = TreeRoutingTable(self.loop, self.peer_manager, self.node_id, split_buckets_under_index)
     self.data_store = DictDataStore(self.loop, self.peer_manager)
     self.ping_queue = PingQueue(self.loop, self)
     self.node_rpc = KademliaRPC(self, self.loop, self.peer_port)
     self.rpc_timeout = rpc_timeout
     self._split_lock = asyncio.Lock(loop=self.loop)
     self._to_remove: typing.Set['KademliaPeer'] = set()
     self._to_add: typing.Set['KademliaPeer'] = set()
     self._wakeup_routing_task = asyncio.Event(loop=self.loop)
     self.maintaing_routing_task: typing.Optional[asyncio.Task] = None
Пример #2
0
 def setUp(self):
     self.loop = mock.Mock(spec=asyncio.BaseEventLoop)
     self.loop.time = lambda: 0.0
     self.peer_manager = PeerManager(self.loop)
     self.data_store = DictDataStore(self.loop, self.peer_manager)