Пример #1
0
    def convert_first_bytes_to_older_version(
            self, first_msg_bytes: memoryview) -> memoryview:
        if len(first_msg_bytes) < AbstractBloxrouteMessage.HEADER_LENGTH + AbstractBroadcastMessage.PAYLOAD_LENGTH - \
                constants.CONTROL_FLAGS_LEN:
            raise ValueError("Not enough bytes to convert.")
        command, payload_len = BroadcastMessage.unpack(first_msg_bytes)

        result_bytes = bytearray(
            len(first_msg_bytes) - constants.BROADCAST_TYPE_LEN)

        result_bytes[:self._BASE_LENGTH] = first_msg_bytes[:self._BASE_LENGTH]
        result_bytes[self._BASE_LENGTH:] = first_msg_bytes[self._BREAKPOINT:]

        struct.pack_into("<12sL", result_bytes,
                         constants.STARTING_SEQUENCE_BYTES_LEN, command,
                         payload_len - constants.BROADCAST_TYPE_LEN)

        return memoryview(result_bytes)
Пример #2
0
    def convert_first_bytes_to_older_version(
            self, first_msg_bytes: memoryview) -> memoryview:
        if len(first_msg_bytes) < AbstractBloxrouteMessage.HEADER_LENGTH + AbstractBroadcastMessage.PAYLOAD_LENGTH - \
                constants.CONTROL_FLAGS_LEN:
            raise ValueError("Not enough bytes to convert.")
        command, payload_len = BroadcastMessage.unpack(first_msg_bytes)

        result_bytes = bytearray(
            len(first_msg_bytes) - constants.NODE_ID_SIZE_IN_BYTES)

        result_bytes[:AbstractBroadcastMessage.SOURCE_ID_OFFSET] = \
            first_msg_bytes[:AbstractBroadcastMessage.SOURCE_ID_OFFSET]
        result_bytes[AbstractBroadcastMessage.SOURCE_ID_OFFSET:] = \
            first_msg_bytes[AbstractBroadcastMessage.SOURCE_ID_OFFSET + constants.NODE_ID_SIZE_IN_BYTES:]

        struct.pack_into("<12sL", result_bytes,
                         constants.STARTING_SEQUENCE_BYTES_LEN, command,
                         payload_len - constants.NODE_ID_SIZE_IN_BYTES)

        return memoryview(result_bytes)