code: def send(self, message_type, data, connection_id, callback=None,
               one_way=False):
          
          if connection_id not in self._connections:
              raise ValueError("Unknown connection id: {}".format(connection_id))
          connection_info = self._connections.get(connection_id)
          if connection_info.connection_type == \
                  ConnectionType.ZMQ_IDENTITY:
              message = validator_pb2.Message(
                  correlation_id=_generate_id(),
                  content=data,
                  message_type=message_type)
  
              timer_tag = get_enum_name(message.message_type)
              timer_ctx = self._get_send_response_timer(timer_tag).time()
              fut = future.Future(
                  message.correlation_id,
                  message.content,
                  callback,
                  timeout=self._connection_timeout,
                  timer_ctx=timer_ctx)
              if not one_way:
                  self._futures.put(fut)
  
              self._send_receive_thread.send_message(msg=message,
                                                     connection_id=connection_id)
              return fut
  
          return connection_info.connection.send(
              message_type,
              data,
              callback=callback,
              one_way=one_way)
docs: Send a message of message_type
          :param connection_id: the identity for the connection to send to
          :param message_type: validator_pb2.Message.* enum value
          :param data: bytes serialized protobuf
          :return: future.Future