# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc
import warnings

from envoy.service.status.v2 import csds_pb2 as envoy_dot_service_dot_status_dot_v2_dot_csds__pb2

GRPC_GENERATED_VERSION = '1.74.0'
GRPC_VERSION = grpc.__version__
_version_not_supported = False

try:
    from grpc._utilities import first_version_is_lower
    _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
except ImportError:
    _version_not_supported = True

if _version_not_supported:
    raise RuntimeError(
        f'The grpc package installed is at version {GRPC_VERSION},'
        + f' but the generated code in envoy/service/status/v2/csds_pb2_grpc.py depends on'
        + f' grpcio>={GRPC_GENERATED_VERSION}.'
        + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
        + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
    )


class ClientStatusDiscoveryServiceStub(object):
    """[#protodoc-title: Client Status Discovery Service (CSDS)]

    CSDS is Client Status Discovery Service. It can be used to get the status of
    an xDS-compliant client from the management server's point of view. In the
    future, it can potentially be used as an interface to get the current
    state directly from the client.
    """

    def __init__(self, channel):
        """Constructor.

        Args:
            channel: A grpc.Channel.
        """
        self.StreamClientStatus = channel.stream_stream(
                '/envoy.service.status.v2.ClientStatusDiscoveryService/StreamClientStatus',
                request_serializer=envoy_dot_service_dot_status_dot_v2_dot_csds__pb2.ClientStatusRequest.SerializeToString,
                response_deserializer=envoy_dot_service_dot_status_dot_v2_dot_csds__pb2.ClientStatusResponse.FromString,
                _registered_method=True)
        self.FetchClientStatus = channel.unary_unary(
                '/envoy.service.status.v2.ClientStatusDiscoveryService/FetchClientStatus',
                request_serializer=envoy_dot_service_dot_status_dot_v2_dot_csds__pb2.ClientStatusRequest.SerializeToString,
                response_deserializer=envoy_dot_service_dot_status_dot_v2_dot_csds__pb2.ClientStatusResponse.FromString,
                _registered_method=True)


class ClientStatusDiscoveryServiceServicer(object):
    """[#protodoc-title: Client Status Discovery Service (CSDS)]

    CSDS is Client Status Discovery Service. It can be used to get the status of
    an xDS-compliant client from the management server's point of view. In the
    future, it can potentially be used as an interface to get the current
    state directly from the client.
    """

    def StreamClientStatus(self, request_iterator, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def FetchClientStatus(self, request, context):
        """Missing associated documentation comment in .proto file."""
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')


def add_ClientStatusDiscoveryServiceServicer_to_server(servicer, server):
    rpc_method_handlers = {
            'StreamClientStatus': grpc.stream_stream_rpc_method_handler(
                    servicer.StreamClientStatus,
                    request_deserializer=envoy_dot_service_dot_status_dot_v2_dot_csds__pb2.ClientStatusRequest.FromString,
                    response_serializer=envoy_dot_service_dot_status_dot_v2_dot_csds__pb2.ClientStatusResponse.SerializeToString,
            ),
            'FetchClientStatus': grpc.unary_unary_rpc_method_handler(
                    servicer.FetchClientStatus,
                    request_deserializer=envoy_dot_service_dot_status_dot_v2_dot_csds__pb2.ClientStatusRequest.FromString,
                    response_serializer=envoy_dot_service_dot_status_dot_v2_dot_csds__pb2.ClientStatusResponse.SerializeToString,
            ),
    }
    generic_handler = grpc.method_handlers_generic_handler(
            'envoy.service.status.v2.ClientStatusDiscoveryService', rpc_method_handlers)
    server.add_generic_rpc_handlers((generic_handler,))
    server.add_registered_method_handlers('envoy.service.status.v2.ClientStatusDiscoveryService', rpc_method_handlers)


 # This class is part of an EXPERIMENTAL API.
class ClientStatusDiscoveryService(object):
    """[#protodoc-title: Client Status Discovery Service (CSDS)]

    CSDS is Client Status Discovery Service. It can be used to get the status of
    an xDS-compliant client from the management server's point of view. In the
    future, it can potentially be used as an interface to get the current
    state directly from the client.
    """

    @staticmethod
    def StreamClientStatus(request_iterator,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.stream_stream(
            request_iterator,
            target,
            '/envoy.service.status.v2.ClientStatusDiscoveryService/StreamClientStatus',
            envoy_dot_service_dot_status_dot_v2_dot_csds__pb2.ClientStatusRequest.SerializeToString,
            envoy_dot_service_dot_status_dot_v2_dot_csds__pb2.ClientStatusResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def FetchClientStatus(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/envoy.service.status.v2.ClientStatusDiscoveryService/FetchClientStatus',
            envoy_dot_service_dot_status_dot_v2_dot_csds__pb2.ClientStatusRequest.SerializeToString,
            envoy_dot_service_dot_status_dot_v2_dot_csds__pb2.ClientStatusResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)
