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)
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)
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)