def data_received(self, data):
        length_to_parse = min(self.receive_length, len(data))
        if self.read_header:
            self.header_buffer = self.header_buffer + data[0:length_to_parse]
        else:
            self.body_buffer = self.body_buffer + data[0:length_to_parse]

        self.receive_length -= length_to_parse

        if self.receive_length == 0 and self.read_header:
            self.read_header = False
            self.body_buffer = b''
            msg_head, msg_version, msg_type, msg_size = netutils.ConfigMessage.header_from_bytes(
                self.header_buffer)
            if msg_head != b'CONF':
                print("Received invalid debug header: {}".format(msg_head))
                self.transport.close()
                return

            self.receive_length = msg_size
            self.msg_type = msg_type
            self.msg_version = msg_version

        if self.receive_length == 0 and not self.read_header:
            self.handle_message(
                netutils.ConfigMessage(self.msg_type, self.body_buffer,
                                       self.receive_length, self.msg_version))
            self.read_header = True
            self.header_buffer = b''
            self.receive_length = 8

        data = data[length_to_parse:]
        if len(data):
            self.data_received(data)
Esempio n. 2
0
 def send_config_msg(self, msg_type: netutils.ConfigMsgType,
                     body: str = ""):
     self.send(netutils.ConfigMessage(msg_type, body).toBytes())