pull/20812/head
Richard Belleville 6 years ago
parent 897c798311
commit b6a41e2e21
  1. 45
      src/python/grpcio/grpc/_channel.py

@ -253,24 +253,23 @@ def _rpc_state_string(class_name, rpc_state):
"""Calculates error string for RPC.""" """Calculates error string for RPC."""
with rpc_state.condition: with rpc_state.condition:
if rpc_state.code is None: if rpc_state.code is None:
return '<{} object>'.format( return '<{} object>'.format(class_name)
class_name)
elif rpc_state.code is grpc.StatusCode.OK: elif rpc_state.code is grpc.StatusCode.OK:
return _OK_RENDEZVOUS_REPR_FORMAT.format( return _OK_RENDEZVOUS_REPR_FORMAT.format(class_name, rpc_state.code,
class_name, rpc_state.code, rpc_state.details) rpc_state.details)
else: else:
return _NON_OK_RENDEZVOUS_REPR_FORMAT.format( return _NON_OK_RENDEZVOUS_REPR_FORMAT.format(
class_name, rpc_state.code, rpc_state.details, class_name, rpc_state.code, rpc_state.details,
rpc_state.debug_error_string) rpc_state.debug_error_string)
class _RpcError(grpc.RpcError, grpc.Call): class _RpcError(grpc.RpcError, grpc.Call):
"""An RPC error not tied to the execution of a particular RPC. """An RPC error not tied to the execution of a particular RPC.
Attributes: Attributes:
_state: An instance of _RPCState. _state: An instance of _RPCState.
""" """
def __init__(self, state): def __init__(self, state):
self._state = state self._state = state
@ -436,7 +435,8 @@ class _SingleThreadedRendezvous(_Rendezvous): # pylint: disable=too-many-ancest
"""See grpc.Call.trailing_metadata""" """See grpc.Call.trailing_metadata"""
with self._state.condition: with self._state.condition:
if self._state.trailing_metadata is None: if self._state.trailing_metadata is None:
raise RuntimeError("Cannot get trailing metadata until RPC is completed.") raise RuntimeError(
"Cannot get trailing metadata until RPC is completed.")
return self._state.trailing_metadata return self._state.trailing_metadata
def code(self): def code(self):
@ -466,7 +466,7 @@ class _SingleThreadedRendezvous(_Rendezvous): # pylint: disable=too-many-ancest
def _next_response(self): def _next_response(self):
while True: while True:
event = self._get_next_event() self._get_next_event()
with self._state.condition: with self._state.condition:
if self._state.response is not None: if self._state.response is not None:
response = self._state.response response = self._state.response
@ -494,7 +494,8 @@ class _SingleThreadedRendezvous(_Rendezvous): # pylint: disable=too-many-ancest
def debug_error_string(self): def debug_error_string(self):
with self._state.condition: with self._state.condition:
if self._state.debug_error_string is None: if self._state.debug_error_string is None:
raise RuntimeError("Cannot get debug error string until RPC is completed.") raise RuntimeError(
"Cannot get debug error string until RPC is completed.")
return _common.decode(self._state.debug_error_string) return _common.decode(self._state.debug_error_string)
@ -820,8 +821,8 @@ class _UnaryUnaryMultiCallable(grpc.UnaryUnaryMultiCallable):
self._method, None, deadline, metadata, None self._method, None, deadline, metadata, None
if credentials is None else credentials._credentials, if credentials is None else credentials._credentials,
(operations,), event_handler, self._context) (operations,), event_handler, self._context)
return _MultiThreadedRendezvous(state, call, self._response_deserializer, return _MultiThreadedRendezvous(
deadline) state, call, self._response_deserializer, deadline)
class _SingleThreadedUnaryStreamMultiCallable(grpc.UnaryStreamMultiCallable): class _SingleThreadedUnaryStreamMultiCallable(grpc.UnaryStreamMultiCallable):
@ -858,13 +859,13 @@ class _SingleThreadedUnaryStreamMultiCallable(grpc.UnaryStreamMultiCallable):
augmented_metadata = _compression.augment_metadata( augmented_metadata = _compression.augment_metadata(
metadata, compression) metadata, compression)
# TODO: Formatting. # TODO: Formatting.
operations_and_tags = ((( operations_and_tags = (
(cygrpc.SendInitialMetadataOperation(augmented_metadata, (((cygrpc.SendInitialMetadataOperation(augmented_metadata,
initial_metadata_flags), initial_metadata_flags),
cygrpc.SendMessageOperation(serialized_request, _EMPTY_FLAGS), cygrpc.SendMessageOperation(serialized_request, _EMPTY_FLAGS),
cygrpc.SendCloseFromClientOperation(_EMPTY_FLAGS)), None),) + cygrpc.SendCloseFromClientOperation(_EMPTY_FLAGS)), None),) +
((( cygrpc.ReceiveStatusOnClientOperation(_EMPTY_FLAGS),), None),) + (((cygrpc.ReceiveStatusOnClientOperation(_EMPTY_FLAGS),), None),) +
((( cygrpc.ReceiveInitialMetadataOperation(_EMPTY_FLAGS),), None),)) (((cygrpc.ReceiveInitialMetadataOperation(_EMPTY_FLAGS),), None),))
call = self._channel.segregated_call( call = self._channel.segregated_call(
cygrpc.PropagationConstants.GRPC_PROPAGATE_DEFAULTS, self._method, cygrpc.PropagationConstants.GRPC_PROPAGATE_DEFAULTS, self._method,
None, _determine_deadline(deadline), metadata, call_credentials, None, _determine_deadline(deadline), metadata, call_credentials,
@ -921,8 +922,8 @@ class _UnaryStreamMultiCallable(grpc.UnaryStreamMultiCallable):
credentials._credentials, operationses, credentials._credentials, operationses,
_event_handler(state, _event_handler(state,
self._response_deserializer), self._context) self._response_deserializer), self._context)
return _MultiThreadedRendezvous(state, call, self._response_deserializer, return _MultiThreadedRendezvous(
deadline) state, call, self._response_deserializer, deadline)
class _StreamUnaryMultiCallable(grpc.StreamUnaryMultiCallable): class _StreamUnaryMultiCallable(grpc.StreamUnaryMultiCallable):
@ -1006,7 +1007,8 @@ class _StreamUnaryMultiCallable(grpc.StreamUnaryMultiCallable):
metadata, initial_metadata_flags), event_handler, self._context) metadata, initial_metadata_flags), event_handler, self._context)
_consume_request_iterator(request_iterator, state, call, _consume_request_iterator(request_iterator, state, call,
self._request_serializer, event_handler) self._request_serializer, event_handler)
return _MultiThreadedRendezvous(state, call, self._response_deserializer, deadline) return _MultiThreadedRendezvous(state, call,
self._response_deserializer, deadline)
class _StreamStreamMultiCallable(grpc.StreamStreamMultiCallable): class _StreamStreamMultiCallable(grpc.StreamStreamMultiCallable):
@ -1050,7 +1052,8 @@ class _StreamStreamMultiCallable(grpc.StreamStreamMultiCallable):
event_handler, self._context) event_handler, self._context)
_consume_request_iterator(request_iterator, state, call, _consume_request_iterator(request_iterator, state, call,
self._request_serializer, event_handler) self._request_serializer, event_handler)
return _MultiThreadedRendezvous(state, call, self._response_deserializer, deadline) return _MultiThreadedRendezvous(state, call,
self._response_deserializer, deadline)
class _InitialMetadataFlags(int): class _InitialMetadataFlags(int):

Loading…
Cancel
Save