def recv_request(self) -> Tuple[IncomingPacketBundle, Replier]: """ Receive incoming messages :return: The incoming packet data and a replier object """ data, sender = self.listen_socket.recvfrom(65536) # Create the message-ID message_counter = increase_message_counter() message_id = '#{:06X}'.format(message_counter) logger.log(DEBUG_PACKETS, "{message_id}: Received message from {client_addr} port {port} on {interface}".format( message_id=message_id, client_addr=sender[0], port=sender[1], interface=self.interface_name)) interface_id_option = InterfaceIdOption(interface_id=self.interface_id) packet_bundle = IncomingPacketBundle(message_id=message_id, data=data, source_address=IPv6Address(sender[0].split('%')[0]), link_address=self.global_address, interface_index=self.interface_index, received_over_multicast=self.listen_address.is_multicast, received_over_tcp=False, marks=self.marks, relay_options=[interface_id_option]) replier = UDPReplier(self.reply_socket) return packet_bundle, replier
def packet_from_buffer(self): """ Create a packet and replier from the data in the buffer :return: The incoming packet data and a replier object """ # Copy the message and remove it from the buffer message_length = unpack_from('!H', self.buffer)[0] data = self.buffer[2:2 + message_length] self.buffer = self.buffer[2 + message_length:] # Create the message-ID message_counter = increase_message_counter() message_id = '#{:06X}'.format(message_counter) logger.log(DEBUG_PACKETS, "{message_id}: Received message from {client_addr} port {port}".format( message_id=message_id, client_addr=str(self.client_address), port=self.client_port)) interface_id_option = InterfaceIdOption(interface_id=self.interface_id) packet_bundle = IncomingPacketBundle(message_id=message_id, data=data, source_address=self.client_address, link_address=self.global_address, interface_index=self.interface_index, received_over_multicast=False, received_over_tcp=True, marks=self.marks, relay_options=[interface_id_option]) # Create a replier replier = TCPReplier(self.connected_socket, self.write_lock) return packet_bundle, replier
def recv_request(self) -> Tuple[IncomingPacketBundle, Replier]: """ Receive incoming messages :return: The incoming packet data and a replier object """ data, sender = self.listen_socket.recvfrom(65536) # Create the message-ID message_counter = increase_message_counter() message_id = "#{:06X}".format(message_counter) logger.log( DEBUG_PACKETS, "{message_id}: Received message from {client_addr} port {port} on {interface}".format( message_id=message_id, client_addr=sender[0], port=sender[1], interface=self.interface_name ), ) interface_id_option = InterfaceIdOption(interface_id=self.interface_id) packet_bundle = IncomingPacketBundle( message_id=message_id, data=data, source_address=IPv6Address(sender[0].split("%")[0]), link_address=self.global_address, interface_index=self.interface_index, received_over_multicast=self.listen_address.is_multicast, received_over_tcp=False, marks=self.marks, relay_options=[interface_id_option], ) replier = UDPReplier(self.reply_socket) return packet_bundle, replier