20 from grpc
import _common
23 _LOGGER = logging.getLogger(__name__)
27 collections.namedtuple(
'AuthMetadataContext', (
37 self.
lock = threading.Lock()
50 if self.
_state.exception
is None:
53 'AuthMetadataPluginCallback invoked more than once!')
58 'AuthMetadataPluginCallback raised exception "{}"!'.
format(
61 self.
_callback(metadata, cygrpc.StatusCode.ok,
None)
63 self.
_callback(
None, cygrpc.StatusCode.internal,
64 _common.encode(
str(error)))
84 def __call__(self, service_url, method_name, callback):
86 _common.decode(method_name))
91 except Exception
as exception:
93 'AuthMetadataPluginCallback "%s" raised exception!',
95 with callback_state.lock:
96 callback_state.exception = exception
97 if callback_state.called:
99 callback(
None, cygrpc.StatusCode.internal,
100 _common.encode(
str(exception)))
106 effective_name = metadata_plugin.__name__
107 except AttributeError:
108 effective_name = metadata_plugin.__class__.__name__
110 effective_name = name
112 cygrpc.MetadataPluginCallCredentials(
_Plugin(metadata_plugin),
113 _common.encode(effective_name)))