Last active
December 24, 2020 19:48
-
-
Save mkschulze/9e9f169e39256affd8abb54c286cd7e8 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Channel(six.with_metaclass(abc.ABCMeta)): | |
"""Affords RPC invocation via generic methods on client-side. | |
Channel objects implement the Context Manager type, although they need not | |
support being entered and exited multiple times. | |
""" | |
@abc.abstractmethod | |
def subscribe(self, callback, try_to_connect=False): | |
"""Subscribe to this Channel's connectivity state machine. | |
A Channel may be in any of the states described by ChannelConnectivity. | |
This method allows application to monitor the state transitions. | |
The typical use case is to debug or gain better visibility into gRPC | |
runtime's state. | |
Args: | |
callback: A callable to be invoked with ChannelConnectivity argument. | |
ChannelConnectivity describes current state of the channel. | |
The callable will be invoked immediately upon subscription | |
and again for every change to ChannelConnectivity until it | |
is unsubscribed or this Channel object goes out of scope. | |
try_to_connect: A boolean indicating whether or not this Channel | |
should attempt to connect immediately. If set to False, gRPC | |
runtime decides when to connect. | |
""" | |
raise NotImplementedError() | |
@abc.abstractmethod | |
def unsubscribe(self, callback): | |
"""Unsubscribes a subscribed callback from this Channel's connectivity. | |
Args: | |
callback: A callable previously registered with this Channel from | |
having been passed to its "subscribe" method. | |
""" | |
raise NotImplementedError() | |
@abc.abstractmethod | |
def unary_unary(self, | |
method, | |
request_serializer=None, | |
response_deserializer=None): | |
"""Creates a UnaryUnaryMultiCallable for a unary-unary method. | |
Args: | |
method: The name of the RPC method. | |
request_serializer: Optional :term:`serializer` for serializing the request | |
message. Request goes unserialized in case None is passed. | |
response_deserializer: Optional :term:`deserializer` for deserializing the | |
response message. Response goes undeserialized in case None | |
is passed. | |
Returns: | |
A UnaryUnaryMultiCallable value for the named unary-unary method. | |
""" | |
raise NotImplementedError() | |
@abc.abstractmethod | |
def unary_stream(self, | |
method, | |
request_serializer=None, | |
response_deserializer=None): | |
"""Creates a UnaryStreamMultiCallable for a unary-stream method. | |
Args: | |
method: The name of the RPC method. | |
request_serializer: Optional :term:`serializer` for serializing the request | |
message. Request goes unserialized in case None is passed. | |
response_deserializer: Optional :term:`deserializer` for deserializing the | |
response message. Response goes undeserialized in case None is | |
passed. | |
Returns: | |
A UnaryStreamMultiCallable value for the name unary-stream method. | |
""" | |
raise NotImplementedError() | |
@abc.abstractmethod | |
def stream_unary(self, | |
method, | |
request_serializer=None, | |
response_deserializer=None): | |
"""Creates a StreamUnaryMultiCallable for a stream-unary method. | |
Args: | |
method: The name of the RPC method. | |
request_serializer: Optional :term:`serializer` for serializing the request | |
message. Request goes unserialized in case None is passed. | |
response_deserializer: Optional :term:`deserializer` for deserializing the | |
response message. Response goes undeserialized in case None is | |
passed. | |
Returns: | |
A StreamUnaryMultiCallable value for the named stream-unary method. | |
""" | |
raise NotImplementedError() | |
@abc.abstractmethod | |
def stream_stream(self, | |
method, | |
request_serializer=None, | |
response_deserializer=None): | |
"""Creates a StreamStreamMultiCallable for a stream-stream method. | |
Args: | |
method: The name of the RPC method. | |
request_serializer: Optional :term:`serializer` for serializing the request | |
message. Request goes unserialized in case None is passed. | |
response_deserializer: Optional :term:`deserializer` for deserializing the | |
response message. Response goes undeserialized in case None | |
is passed. | |
Returns: | |
A StreamStreamMultiCallable value for the named stream-stream method. | |
""" | |
raise NotImplementedError() | |
@abc.abstractmethod | |
def close(self): | |
"""Closes this Channel and releases all resources held by it. | |
Closing the Channel will immediately terminate all RPCs active with the | |
Channel and it is not valid to invoke new RPCs with the Channel. | |
This method is idempotent. | |
""" | |
raise NotImplementedError() | |
def __enter__(self): | |
"""Enters the runtime context related to the channel object.""" | |
raise NotImplementedError() | |
def __exit__(self, exc_type, exc_val, exc_tb): | |
"""Exits the runtime context related to the channel object.""" | |
raise NotImplementedError() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment