Spaces:
Running
Running
# Copyright 2015 gRPC authors. | |
# | |
# Licensed under the Apache License, Version 2.0 (the "License"); | |
# you may not use this file except in compliance with the License. | |
# You may obtain a copy of the License at | |
# | |
# http://www.apache.org/licenses/LICENSE-2.0 | |
# | |
# Unless required by applicable law or agreed to in writing, software | |
# distributed under the License is distributed on an "AS IS" BASIS, | |
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
# See the License for the specific language governing permissions and | |
# limitations under the License. | |
"""Constants and interfaces of the Beta API of gRPC Python.""" | |
import abc | |
import grpc | |
ChannelConnectivity = grpc.ChannelConnectivity | |
# FATAL_FAILURE was a Beta-API name for SHUTDOWN | |
ChannelConnectivity.FATAL_FAILURE = ChannelConnectivity.SHUTDOWN | |
StatusCode = grpc.StatusCode | |
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) | |
GRPCAuthMetadataContext = grpc.AuthMetadataContext | |
GRPCAuthMetadataPluginCallback = grpc.AuthMetadataPluginCallback | |
GRPCAuthMetadataPlugin = grpc.AuthMetadataPlugin | |
class GRPCServicerContext(abc.ABC): | |
"""Exposes gRPC-specific options and behaviors to code servicing RPCs.""" | |
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() | |
def disable_next_response_compression(self): | |
"""Disables compression of the next response passed by the application.""" | |
raise NotImplementedError() | |
class GRPCInvocationContext(abc.ABC): | |
"""Exposes gRPC-specific options and behaviors to code invoking RPCs.""" | |
def disable_next_request_compression(self): | |
"""Disables compression of the next request passed by the application.""" | |
raise NotImplementedError() | |
class Server(abc.ABC): | |
"""Services RPCs.""" | |
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() | |
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() | |
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() | |
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 server | |
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() | |