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()
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))
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()
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))
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()
def decode(data: bytes): packet = packet_pb2.RpcPacket() packet.MergeFromString(data) return packet