| Index: third_party/grpc/src/python/grpcio/grpc/beta/interfaces.py
|
| diff --git a/third_party/grpc/src/python/grpcio/grpc/beta/interfaces.py b/third_party/grpc/src/python/grpcio/grpc/beta/interfaces.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..0663119163f2eadea3e2d34319da0ae2ce3b1ed5
|
| --- /dev/null
|
| +++ b/third_party/grpc/src/python/grpcio/grpc/beta/interfaces.py
|
| @@ -0,0 +1,258 @@
|
| +# Copyright 2015, Google Inc.
|
| +# All rights reserved.
|
| +#
|
| +# Redistribution and use in source and binary forms, with or without
|
| +# modification, are permitted provided that the following conditions are
|
| +# met:
|
| +#
|
| +# * Redistributions of source code must retain the above copyright
|
| +# notice, this list of conditions and the following disclaimer.
|
| +# * Redistributions in binary form must reproduce the above
|
| +# copyright notice, this list of conditions and the following disclaimer
|
| +# in the documentation and/or other materials provided with the
|
| +# distribution.
|
| +# * Neither the name of Google Inc. nor the names of its
|
| +# contributors may be used to endorse or promote products derived from
|
| +# this software without specific prior written permission.
|
| +#
|
| +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
| +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
| +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
| +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
| +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
| +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
| +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
| +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
| +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
| +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| +
|
| +"""Constants and interfaces of the Beta API of gRPC Python."""
|
| +
|
| +import abc
|
| +import enum
|
| +
|
| +from grpc._adapter import _types
|
| +
|
| +
|
| +@enum.unique
|
| +class ChannelConnectivity(enum.Enum):
|
| + """Mirrors grpc_connectivity_state in the gRPC Core.
|
| +
|
| + Attributes:
|
| + IDLE: The channel is idle.
|
| + CONNECTING: The channel is connecting.
|
| + READY: The channel is ready to conduct RPCs.
|
| + TRANSIENT_FAILURE: The channel has seen a failure from which it expects to
|
| + recover.
|
| + FATAL_FAILURE: The channel has seen a failure from which it cannot recover.
|
| + """
|
| + IDLE = (_types.ConnectivityState.IDLE, 'idle',)
|
| + CONNECTING = (_types.ConnectivityState.CONNECTING, 'connecting',)
|
| + READY = (_types.ConnectivityState.READY, 'ready',)
|
| + TRANSIENT_FAILURE = (
|
| + _types.ConnectivityState.TRANSIENT_FAILURE, 'transient failure',)
|
| + FATAL_FAILURE = (_types.ConnectivityState.FATAL_FAILURE, 'fatal failure',)
|
| +
|
| +
|
| +@enum.unique
|
| +class StatusCode(enum.Enum):
|
| + """Mirrors grpc_status_code in the C core."""
|
| + OK = 0
|
| + CANCELLED = 1
|
| + UNKNOWN = 2
|
| + INVALID_ARGUMENT = 3
|
| + DEADLINE_EXCEEDED = 4
|
| + NOT_FOUND = 5
|
| + ALREADY_EXISTS = 6
|
| + PERMISSION_DENIED = 7
|
| + RESOURCE_EXHAUSTED = 8
|
| + FAILED_PRECONDITION = 9
|
| + ABORTED = 10
|
| + OUT_OF_RANGE = 11
|
| + UNIMPLEMENTED = 12
|
| + INTERNAL = 13
|
| + UNAVAILABLE = 14
|
| + DATA_LOSS = 15
|
| + UNAUTHENTICATED = 16
|
| +
|
| +
|
| +class GRPCCallOptions(object):
|
| + """A value encapsulating gRPC-specific options passed on RPC invocation.
|
| +
|
| + This class and its instances have no supported interface - it exists to
|
| + define the type of its instances and its instances exist to be passed to
|
| + other functions.
|
| + """
|
| +
|
| + def __init__(self, disable_compression, subcall_of, credentials):
|
| + self.disable_compression = disable_compression
|
| + self.subcall_of = subcall_of
|
| + self.credentials = credentials
|
| +
|
| +
|
| +def grpc_call_options(disable_compression=False, credentials=None):
|
| + """Creates a GRPCCallOptions value to be passed at RPC invocation.
|
| +
|
| + All parameters are optional and should always be passed by keyword.
|
| +
|
| + Args:
|
| + disable_compression: A boolean indicating whether or not compression should
|
| + be disabled for the request object of the RPC. Only valid for
|
| + request-unary RPCs.
|
| + credentials: A CallCredentials object to use for the invoked RPC.
|
| + """
|
| + return GRPCCallOptions(disable_compression, None, credentials)
|
| +
|
| +
|
| +class GRPCAuthMetadataContext(object):
|
| + """Provides information to call credentials metadata plugins.
|
| +
|
| + Attributes:
|
| + service_url: A string URL of the service being called into.
|
| + method_name: A string of the fully qualified method name being called.
|
| + """
|
| + __metaclass__ = abc.ABCMeta
|
| +
|
| +
|
| +class GRPCAuthMetadataPluginCallback(object):
|
| + """Callback object received by a metadata plugin."""
|
| + __metaclass__ = abc.ABCMeta
|
| +
|
| + def __call__(self, metadata, error):
|
| + """Inform the gRPC runtime of the metadata to construct a CallCredentials.
|
| +
|
| + Args:
|
| + metadata: An iterable of 2-sequences (e.g. tuples) of metadata key/value
|
| + pairs.
|
| + error: An Exception to indicate error or None to indicate success.
|
| + """
|
| + raise NotImplementedError()
|
| +
|
| +
|
| +class GRPCAuthMetadataPlugin(object):
|
| + """
|
| + """
|
| + __metaclass__ = abc.ABCMeta
|
| +
|
| + def __call__(self, context, callback):
|
| + """Invoke the plugin.
|
| +
|
| + Must not block. Need only be called by the gRPC runtime.
|
| +
|
| + Args:
|
| + context: A GRPCAuthMetadataContext providing information on what the
|
| + plugin is being used for.
|
| + callback: A GRPCAuthMetadataPluginCallback to be invoked either
|
| + synchronously or asynchronously.
|
| + """
|
| + raise NotImplementedError()
|
| +
|
| +
|
| +class GRPCServicerContext(object):
|
| + """Exposes gRPC-specific options and behaviors to code servicing RPCs."""
|
| + __metaclass__ = abc.ABCMeta
|
| +
|
| + @abc.abstractmethod
|
| + def peer(self):
|
| + """Identifies the peer that invoked the RPC being serviced.
|
| +
|
| + Returns:
|
| + A string identifying the peer that invoked the RPC being serviced.
|
| + """
|
| + raise NotImplementedError()
|
| +
|
| + @abc.abstractmethod
|
| + def disable_next_response_compression(self):
|
| + """Disables compression of the next response passed by the application."""
|
| + raise NotImplementedError()
|
| +
|
| +
|
| +class GRPCInvocationContext(object):
|
| + """Exposes gRPC-specific options and behaviors to code invoking RPCs."""
|
| + __metaclass__ = abc.ABCMeta
|
| +
|
| + @abc.abstractmethod
|
| + def disable_next_request_compression(self):
|
| + """Disables compression of the next request passed by the application."""
|
| + raise NotImplementedError()
|
| +
|
| +
|
| +class Server(object):
|
| + """Services RPCs."""
|
| + __metaclass__ = abc.ABCMeta
|
| +
|
| + @abc.abstractmethod
|
| + def add_insecure_port(self, address):
|
| + """Reserves a port for insecure RPC service once this Server becomes active.
|
| +
|
| + This method may only be called before calling this Server's start method is
|
| + called.
|
| +
|
| + Args:
|
| + address: The address for which to open a port.
|
| +
|
| + Returns:
|
| + An integer port on which RPCs will be serviced after this link has been
|
| + started. This is typically the same number as the port number contained
|
| + in the passed address, but will likely be different if the port number
|
| + contained in the passed address was zero.
|
| + """
|
| + raise NotImplementedError()
|
| +
|
| + @abc.abstractmethod
|
| + def add_secure_port(self, address, server_credentials):
|
| + """Reserves a port for secure RPC service after this Server becomes active.
|
| +
|
| + This method may only be called before calling this Server's start method is
|
| + called.
|
| +
|
| + Args:
|
| + address: The address for which to open a port.
|
| + server_credentials: A ServerCredentials.
|
| +
|
| + Returns:
|
| + An integer port on which RPCs will be serviced after this link has been
|
| + started. This is typically the same number as the port number contained
|
| + in the passed address, but will likely be different if the port number
|
| + contained in the passed address was zero.
|
| + """
|
| + raise NotImplementedError()
|
| +
|
| + @abc.abstractmethod
|
| + def start(self):
|
| + """Starts this Server's service of RPCs.
|
| +
|
| + This method may only be called while the server is not serving RPCs (i.e. it
|
| + is not idempotent).
|
| + """
|
| + raise NotImplementedError()
|
| +
|
| + @abc.abstractmethod
|
| + def stop(self, grace):
|
| + """Stops this Server's service of RPCs.
|
| +
|
| + All calls to this method immediately stop service of new RPCs. When existing
|
| + RPCs are aborted is controlled by the grace period parameter passed to this
|
| + method.
|
| +
|
| + This method may be called at any time and is idempotent. Passing a smaller
|
| + grace value than has been passed in a previous call will have the effect of
|
| + stopping the Server sooner. Passing a larger grace value than has been
|
| + passed in a previous call will not have the effect of stopping the sooner
|
| + later.
|
| +
|
| + Args:
|
| + grace: A duration of time in seconds to allow existing RPCs to complete
|
| + before being aborted by this Server's stopping. May be zero for
|
| + immediate abortion of all in-progress RPCs.
|
| +
|
| + Returns:
|
| + A threading.Event that will be set when this Server has completely
|
| + stopped. The returned event may not be set until after the full grace
|
| + period (if some ongoing RPC continues for the full length of the period)
|
| + of it may be set much sooner (such as if this Server had no RPCs underway
|
| + at the time it was stopped or if all RPCs that it had underway completed
|
| + very early in the grace period).
|
| + """
|
| + raise NotImplementedError()
|
|
|