Exemplo n.º 1
0
 def __init__(self):
     super().__init__()
     self._datagram_transport = asyncio.DatagramTransport()
     self._write_allowed = asyncio.Event()
     self._queue_nonempty = asyncio.Event()
     self._message_queue = collections.deque(
     )  # type: typing.Deque[MessageQueueEntry]
     self._messenger_task = asyncio.Task(self._send_messages())
Exemplo n.º 2
0
    async def create_datagram_endpoint(proto_lam: typing.Callable[[], 'KademliaProtocol'],
                                       from_addr: typing.Tuple[str, int]):
        def sendto(data, to_addr):
            rx = dht_network.get(to_addr)
            if rx and rx.external_ip:
                # print(f"{from_addr[0]}:{from_addr[1]} -{len(data)} bytes-> {rx.external_ip}:{rx.udp_port}")
                return rx.datagram_received(data, from_addr)

        protocol = proto_lam()
        transport = asyncio.DatagramTransport(extra={'socket': mock_sock})
        transport.is_closing = lambda: False
        transport.close = lambda: mock_sock.close()
        mock_sock.sendto = sendto
        transport.sendto = mock_sock.sendto
        protocol.connection_made(transport)
        dht_network[from_addr] = protocol
        return transport, protocol
Exemplo n.º 3
0
    async def create_datagram_endpoint(proto_lam, sock=None):
        def sendto(p: asyncio.DatagramProtocol):
            def _sendto(data, addr):
                sent_udp_packets.append(data)
                if (data, addr) in udp_replies:
                    loop.call_later(udp_delay_reply, p.datagram_received,
                                    udp_replies[(data, addr)],
                                    (udp_expected_addr, 1900))

            return _sendto

        protocol = proto_lam()
        transport = asyncio.DatagramTransport(extra={'socket': mock_sock})
        transport.close = lambda: mock_sock.close()
        mock_sock.sendto = sendto(protocol)
        transport.sendto = mock_sock.sendto
        protocol.connection_made(transport)
        return transport, protocol
Exemplo n.º 4
0
    def test_dgram_not_implemented(self):
        transport = asyncio.DatagramTransport()

        self.assertRaises(NotImplementedError, transport.sendto, 'data')
        self.assertRaises(NotImplementedError, transport.abort)
Exemplo n.º 5
0
Arquivo: dnslib.py Projeto: bobuk/udns
 def __init__(self, message: bytes, on_exit: asyncio.Future):
     self.message = message
     self.on_exit = on_exit
     self.result: Optional[bytes] = None
     self.transport: asyncio.DatagramTransport = asyncio.DatagramTransport()