Exemplo n.º 1
0
    def _enqueue_response(self,
                          channel_id: int,
                          method=None,
                          status: Status = Status.OK,
                          response=b'',
                          *,
                          ids: Tuple[int, int] = None,
                          process_status=Status.OK):
        if method:
            assert ids is None
            service_id, method_id = method.service.id, method.id
        else:
            assert ids is not None and method is None
            service_id, method_id = ids

        if isinstance(response, bytes):
            payload = response
        else:
            payload = response.SerializeToString()

        self._next_packets.append(
            (packet_pb2.RpcPacket(type=packets.PacketType.RESPONSE,
                                  channel_id=channel_id,
                                  service_id=service_id,
                                  method_id=method_id,
                                  status=status.value,
                                  payload=payload).SerializeToString(),
             process_status))
Exemplo n.º 2
0
def encode_cancel(rpc: tuple) -> bytes:
    channel, service, method = _ids(rpc)
    return packet_pb2.RpcPacket(
        type=packet_pb2.PacketType.CANCEL_SERVER_STREAM,
        channel_id=channel,
        service_id=service,
        method_id=method).SerializeToString()
Exemplo n.º 3
0
def encode_response(rpc: tuple, response: message.Message) -> bytes:
    channel, service, method = _ids(rpc)

    return packet_pb2.RpcPacket(
        type=packet_pb2.PacketType.RESPONSE,
        channel_id=channel,
        service_id=service,
        method_id=method,
        payload=response.SerializeToString()).SerializeToString()
Exemplo n.º 4
0
 def _enqueue_stream_end(self,
                         channel_id: int,
                         method,
                         status: Status = Status.OK,
                         process_status=Status.OK):
     self._next_packets.append(
         (packet_pb2.RpcPacket(type=packets.PacketType.SERVER_STREAM_END,
                               channel_id=channel_id,
                               service_id=method.service.id,
                               method_id=method.id,
                               status=status.value).SerializeToString(),
          process_status))
Exemplo n.º 5
0
def encode_client_error(packet, status: Status) -> bytes:
    return packet_pb2.RpcPacket(type=packet_pb2.PacketType.CLIENT_ERROR,
                                channel_id=packet.channel_id,
                                service_id=packet.service_id,
                                method_id=packet.method_id,
                                status=status.value).SerializeToString()
Exemplo n.º 6
0
def decode(data: bytes):
    packet = packet_pb2.RpcPacket()
    packet.MergeFromString(data)
    return packet