Ejemplo n.º 1
0
    def process(self, header, body):
        msg = self._connection.receive_from_header_and_body(header, body)
        if isinstance(msg, ua.Message):
            if header.MessageType == ua.MessageType.SecureOpen:
                self.open_secure_channel(msg.SecurityHeader(),
                                         msg.SequenceHeader(), msg.body())

            elif header.MessageType == ua.MessageType.SecureClose:
                self._connection.close()
                return False

            elif header.MessageType == ua.MessageType.SecureMessage:
                return self.process_message(msg.SecurityHeader(),
                                            msg.SequenceHeader(), msg.body())
        elif isinstance(msg, ua.Hello):
            ack = ua.Acknowledge()
            ack.ReceiveBufferSize = msg.ReceiveBufferSize
            ack.SendBufferSize = msg.SendBufferSize
            data = uatcp_to_binary(ua.MessageType.Acknowledge, ack)
            self.socket.write(data)
        elif isinstance(msg, ua.ErrorMessage):
            self.logger.warning("Received an error message type")
        elif msg is None:
            pass  # msg is a ChunkType.Intermediate of an ua.MessageType.SecureMessage
        else:
            self.logger.warning("Unsupported message type: %s",
                                header.MessageType)
            raise utils.ServiceError(ua.StatusCodes.BadTcpMessageTypeInvalid)
        return True
Ejemplo n.º 2
0
    def process(self, header, body):
        msg = self._connection.receive_from_header_and_body(header, body)
        if isinstance(msg, ua.Message):
            if header.MessageType == ua.MessageType.SecureOpen:
                self.open_secure_channel(msg.SecurityHeader(), msg.SequenceHeader(), msg.body())

            elif header.MessageType == ua.MessageType.SecureClose:
                self._connection.close()
                return False

            elif header.MessageType == ua.MessageType.SecureMessage:
                return self.process_message(msg.SecurityHeader(), msg.SequenceHeader(), msg.body())
        elif isinstance(msg, ua.Hello):
            ack = ua.Acknowledge()
            ack.ReceiveBufferSize = msg.ReceiveBufferSize
            ack.SendBufferSize = msg.SendBufferSize
            data = uatcp_to_binary(ua.MessageType.Acknowledge, ack)
            self.socket.write(data)
        elif isinstance(msg, ua.ErrorMessage):
            self.logger.warning("Received an error message type")
        elif msg is None:
            pass  # msg is a ChunkType.Intermediate of an ua.MessageType.SecureMessage
        else:
            self.logger.warning("Unsupported message type: %s", header.MessageType)
            raise utils.ServiceError(ua.StatusCodes.BadTcpMessageTypeInvalid)
        return True
Ejemplo n.º 3
0
 def send_hello(self, url, max_messagesize=0, max_chunkcount=0):
     hello = ua.Hello()
     hello.EndpointUrl = url
     hello.MaxMessageSize = max_messagesize
     hello.MaxChunkCount = max_chunkcount
     future = Future()
     with self._lock:
         self._callbackmap[0] = future
     binmsg = uatcp_to_binary(ua.MessageType.Hello, hello)
     self._socket.write(binmsg)
     ack = future.result(self.timeout)
     return ack
Ejemplo n.º 4
0
 def send_hello(self, url, max_messagesize=0, max_chunkcount=0):
     hello = ua.Hello()
     hello.EndpointUrl = url
     hello.MaxMessageSize = max_messagesize
     hello.MaxChunkCount = max_chunkcount
     future = Future()
     with self._lock:
         self._callbackmap[0] = future
     binmsg = uatcp_to_binary(ua.MessageType.Hello, hello)
     self._socket.write(binmsg)
     ack = future.result(self.timeout)
     return ack