예제 #1
0
  def _unpack(cls, content, circ_id, link_protocol):
    timestamp, content = Size.LONG.pop(content)
    receiver_address, content = Address.pop(content)

    sender_addresses = []
    sender_addr_count, content = Size.CHAR.pop(content)

    for i in range(sender_addr_count):
      addr, content = Address.pop(content)
      sender_addresses.append(addr)

    return NetinfoCell(receiver_address, sender_addresses, datetime.datetime.utcfromtimestamp(timestamp), unused = content)
예제 #2
0
파일: cell.py 프로젝트: zmchu/stem
    def _unpack(
        cls, content: bytes, circ_id: int,
        link_protocol: 'stem.client.datatype.LinkProtocol'
    ) -> 'stem.client.cell.NetinfoCell':
        timestamp, content = Size.LONG.pop(content)
        receiver_address, content = Address.pop(content)

        sender_addresses = []
        sender_addr_count, content = Size.CHAR.pop(content)

        for i in range(sender_addr_count):
            addr, content = Address.pop(content)
            sender_addresses.append(addr)

        return NetinfoCell(receiver_address,
                           sender_addresses,
                           datetime.datetime.utcfromtimestamp(timestamp),
                           unused=content)
예제 #3
0
    def test_packing(self):
        test_data = {
            b'\x04\x04\x7f\x00\x00\x01':
            Address('127.0.0.1'),
            b'\x06\x10 \x01\r\xb8\x00\x00\x00\x00\x00\x00\xff\x00\x00B\x83)':
            Address('2001:0db8:0000:0000:0000:ff00:0042:8329'),
        }

        for cell_bytes, address in test_data.items():
            self.assertEqual(cell_bytes, address.pack())
            self.assertEqual(address, Address.unpack(cell_bytes))

        addr, content = Address.pop(
            b'\x04\x04\x7f\x00\x00\x01\x01\x04\x04aq\x0f\x02\x00\x00\x00\x00')
        self.assertEqual(b'\x01\x04\x04aq\x0f\x02\x00\x00\x00\x00', content)

        self.assertEqual(AddrType.IPv4, addr.type)
        self.assertEqual(4, addr.type_int)
        self.assertEqual('127.0.0.1', addr.value)
        self.assertEqual(b'\x7f\x00\x00\x01', addr.value_bin)