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
Beispiel #2
0
 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))
Beispiel #3
0
 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)))
Beispiel #4
0
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
Beispiel #5
0
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)
Beispiel #6
0
 def peer(self):
   return _common.decode(self._rpc_event.operation_call.peer())
Beispiel #7
0
 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)
Beispiel #8
0
 def details(self):
     with self._state.condition:
         while self._state.details is None:
             self._state.condition.wait()
         return _common.decode(self._state.details)
Beispiel #9
0
 def auth_context(self):
     return {
         _common.decode(key): value
         for key, value in six.iteritems(
             cygrpc.auth_context(self._rpc_event.operation_call))
     }
Beispiel #10
0
 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)
Beispiel #11
0
 def details(self):
     with self._state.condition:
         while self._state.details is None:
             self._state.condition.wait()
         return _common.decode(self._state.details)
Beispiel #12
0
 def auth_context(self):
     return {
         _common.decode(key): value
         for key, value in six.iteritems(
             cygrpc.auth_context(self._rpc_event.operation_call))
     }
Beispiel #13
0
 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)
Beispiel #14
0
 def peer(self):
     return _common.decode(self._rpc_event.operation_call.peer())