# 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.tap.v3 import tap_pb2 as envoy_dot_service_dot_tap_dot_v3_dot_tap__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/tap/v3/tap_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 TapSinkServiceStub(object):
    """[#protodoc-title: Tap sink service]

    [#not-implemented-hide:] A tap service to receive incoming taps. Envoy will call
    StreamTaps to deliver captured taps to the server
    """

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

        Args:
            channel: A grpc.Channel.
        """
        self.StreamTaps = channel.stream_unary(
                '/envoy.service.tap.v3.TapSinkService/StreamTaps',
                request_serializer=envoy_dot_service_dot_tap_dot_v3_dot_tap__pb2.StreamTapsRequest.SerializeToString,
                response_deserializer=envoy_dot_service_dot_tap_dot_v3_dot_tap__pb2.StreamTapsResponse.FromString,
                _registered_method=True)


class TapSinkServiceServicer(object):
    """[#protodoc-title: Tap sink service]

    [#not-implemented-hide:] A tap service to receive incoming taps. Envoy will call
    StreamTaps to deliver captured taps to the server
    """

    def StreamTaps(self, request_iterator, context):
        """Envoy will connect and send StreamTapsRequest messages forever. It does not expect any
        response to be sent as nothing would be done in the case of failure. The server should
        disconnect if it expects Envoy to reconnect.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')


def add_TapSinkServiceServicer_to_server(servicer, server):
    rpc_method_handlers = {
            'StreamTaps': grpc.stream_unary_rpc_method_handler(
                    servicer.StreamTaps,
                    request_deserializer=envoy_dot_service_dot_tap_dot_v3_dot_tap__pb2.StreamTapsRequest.FromString,
                    response_serializer=envoy_dot_service_dot_tap_dot_v3_dot_tap__pb2.StreamTapsResponse.SerializeToString,
            ),
    }
    generic_handler = grpc.method_handlers_generic_handler(
            'envoy.service.tap.v3.TapSinkService', rpc_method_handlers)
    server.add_generic_rpc_handlers((generic_handler,))
    server.add_registered_method_handlers('envoy.service.tap.v3.TapSinkService', rpc_method_handlers)


 # This class is part of an EXPERIMENTAL API.
class TapSinkService(object):
    """[#protodoc-title: Tap sink service]

    [#not-implemented-hide:] A tap service to receive incoming taps. Envoy will call
    StreamTaps to deliver captured taps to the server
    """

    @staticmethod
    def StreamTaps(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_unary(
            request_iterator,
            target,
            '/envoy.service.tap.v3.TapSinkService/StreamTaps',
            envoy_dot_service_dot_tap_dot_v3_dot_tap__pb2.StreamTapsRequest.SerializeToString,
            envoy_dot_service_dot_tap_dot_v3_dot_tap__pb2.StreamTapsResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)
