def __call__(self, context, cygrpc_callback): wrapped_cygrpc_callback = _WrappedCygrpcCallback(cygrpc_callback) wrapped_context = AuthMetadataContext( _common.decode(context.service_url), _common.decode(context.method_name)) try: self.plugin( wrapped_context, AuthMetadataPluginCallback(wrapped_cygrpc_callback)) except Exception as error: wrapped_cygrpc_callback.notify_failure(error) raise
def _repr(self): with self._state.condition: if self._state.code is None: return '<_Rendezvous object of in-flight RPC>' else: return '<_Rendezvous of RPC that terminated with ({}, {})>'.format( self._state.code, _common.decode(self._state.details))
def __call__(self, service_url, method_name, callback): context = _AuthMetadataContext( _common.decode(service_url), _common.decode(method_name)) callback_state = _CallbackState() try: self._metadata_plugin( context, _AuthMetadataPluginCallback(callback_state, callback)) except Exception as exception: # pylint: disable=broad-except logging.exception( 'AuthMetadataPluginCallback "%s" raised exception!', self._metadata_plugin) with callback_state.lock: callback_state.exception = exception if callback_state.called: return callback(None, cygrpc.StatusCode.internal, _common.encode(str(exception)))
def _find_method_handler(rpc_event, generic_handlers): for generic_handler in generic_handlers: method_handler = generic_handler.service( _HandlerCallDetails( _common.decode(rpc_event.request_call_details.method), rpc_event.request_metadata)) if method_handler is not None: return method_handler else: return None
def _find_method_handler(rpc_event, generic_handlers, interceptor_pipeline): def query_handlers(handler_call_details): for generic_handler in generic_handlers: method_handler = generic_handler.service(handler_call_details) if method_handler is not None: return method_handler return None handler_call_details = _HandlerCallDetails( _common.decode(rpc_event.call_details.method), rpc_event.invocation_metadata) if interceptor_pipeline is not None: return interceptor_pipeline.execute(query_handlers, handler_call_details) else: return query_handlers(handler_call_details)
def peer(self): return _common.decode(self._rpc_event.operation_call.peer())
def debug_error_string(self): with self._state.condition: while self._state.debug_error_string is None: self._state.condition.wait() return _common.decode(self._state.debug_error_string)
def details(self): with self._state.condition: while self._state.details is None: self._state.condition.wait() return _common.decode(self._state.details)
def auth_context(self): return { _common.decode(key): value for key, value in six.iteritems( cygrpc.auth_context(self._rpc_event.operation_call)) }
def peer_identity_key(self): id_key = cygrpc.peer_identity_key(self._rpc_event.operation_call) return id_key if id_key is None else _common.decode(id_key)