def __init__(self, bytes_data: bytes): self.agent_uuid, self.session_uuid, self.circuit_code = None, None, None if bytes_data is None: return result = BytesPack.unpack_bytes_little_endian( ["uuid", "uuid", "unsigned int32"], bytes_data) self.agent_uuid, self.session_uuid, self.circuit_code = result.unpacked_data
def create_from_bytes(bytes_data: bytes): unpack_result = BytesPack.unpack_bytes_big_endian( ["unsigned byte", "unsigned int32", "unsigned byte"], bytes_data) byte_flags, sequence_number, extra_bytes_count = unpack_result.unpacked_data flags = PacketHeaderFlagsFactory.create_from_byte(byte_flags) extra_bytes = b"" if extra_bytes_count > 0: extra_bytes = unpack_result.remaining_bytes[::extra_bytes_count] packet_header = PacketHeader(flags, sequence_number, extra_bytes) return packet_header
def create_from_bytes(bytes_data: bytes): id_data_type = _get_id_data_type(bytes_data) unpack_result = BytesPack.unpack_bytes_big_endian([id_data_type], bytes_data) message_id = unpack_result.unpacked_data[0] message_blocks_data = unpack_result.remaining_bytes message_class = MessageDecoder.get_message_class_from_id(message_id) if message_class is None: message_instance = UnknownMessage(message_id, message_blocks_data) else: message_instance = message_class(message_blocks_data) return message_instance
def convert_to_bytes(self) -> bytes: return BytesPack.pack_bytes_little_endian( ["uuid", "uuid", "unsigned int32"], self.agent_uuid, self.session_uuid, self.circuit_code)
def convert_to_bytes(self) -> bytes: return BytesPack.pack_bytes_big_endian( ["unsigned byte", "unsigned int32", "unsigned byte"], self.flags.convert_to_byte(), self.sequence_number, len(self.extra_bytes)) + self.extra_bytes
def get_data_size_as_bytes(self): size = BytesPack.calculate_minimum_size([ "unsigned byte", "unsigned int32", "unsigned byte" ]) + len(self.extra_bytes) return size
def convert_to_bytes(self) -> bytes: return BytesPack.pack_bytes_big_endian(["smallest unsigned int"],self.message_id) + self.data
def __init__(self, bytes_data: bytes): result = BytesPack.unpack_bytes_little_endian( ["unsigned byte", "unsigned int32"], bytes_data) self.ping_id, self.oldest_unacked = result.unpacked_data
def convert_to_bytes(self) -> bytes: return BytesPack.pack_bytes_little_endian( ["unsigned byte", "unsigned int32"], self.ping_id, self.oldest_unacked)