Beispiel #1
0
 def send_back(self, message_type, correlation_id, content):
     """
     Return a response to a message.
     :param message_type: validator_pb2.Message.MessageType enum value
     :param correlation_id: a random str internal to the validator
     :param content: protobuf bytes
     :raises (ValidatorConnectionError):
     """
     if not self._event.is_set():
         raise ValidatorConnectionError()
     message = validator_pb2.Message(message_type=message_type,
                                     correlation_id=correlation_id,
                                     content=content)
     self._send_recieve_thread.put_message(message)
Beispiel #2
0
    def send(self, message_type, content):
        """Send a message to the validator

        :param: message_type(validator_pb2.Message.MessageType)
        :param: content(bytes)
        :return: (future.Future)
        :raises: (ValidatorConnectionError)
        """

        if not self._event.is_set():
            raise ValidatorConnectionError()
        message = validator_pb2.Message(message_type=message_type,
                                        correlation_id=_generate_id(),
                                        content=content)
        future = Future(message.correlation_id)
        self._futures.put(future)

        self._send_recieve_thread.put_message(message)
        return future
Beispiel #3
0
 def _receive_message(self):
     """
     internal coroutine that receives messages and puts
     them on the recv_queue
     """
     while True:
         if not self._ready_event.is_set():
             break
         msg_bytes = yield from self._sock.recv()
         message = validator_pb2.Message()
         message.ParseFromString(msg_bytes)
         try:
             self._futures.set_result(
                 message.correlation_id,
                 FutureResult(message_type=message.message_type,
                              content=message.content))
             self._futures.remove(message.correlation_id)
         except FutureCollectionKeyError:
             # if we are getting an initial message, not a response
             if not self._ready_event.is_set():
                 break
             self._recv_queue.put_nowait(message)