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

import mxaccess_gateway_pb2 as mxaccess__gateway__pb2

GRPC_GENERATED_VERSION = '1.80.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},'
        + ' but the generated code in mxaccess_gateway_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 MxAccessGatewayStub(object):
    """Wire-compatibility policy (ProtobufStyleGuide): this contract evolves
    additively only. Never renumber or repurpose an existing field number or
    enum value. When a field or enum value is removed, add a `reserved` range
    (and `reserved` name) covering it in the same change so a future editor
    cannot accidentally reuse the retired tag.

    Public client API for MXAccess sessions hosted by the gateway.
    """

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

        Args:
            channel: A grpc.Channel.
        """
        self.OpenSession = channel.unary_unary(
                '/mxaccess_gateway.v1.MxAccessGateway/OpenSession',
                request_serializer=mxaccess__gateway__pb2.OpenSessionRequest.SerializeToString,
                response_deserializer=mxaccess__gateway__pb2.OpenSessionReply.FromString,
                _registered_method=True)
        self.CloseSession = channel.unary_unary(
                '/mxaccess_gateway.v1.MxAccessGateway/CloseSession',
                request_serializer=mxaccess__gateway__pb2.CloseSessionRequest.SerializeToString,
                response_deserializer=mxaccess__gateway__pb2.CloseSessionReply.FromString,
                _registered_method=True)
        self.Invoke = channel.unary_unary(
                '/mxaccess_gateway.v1.MxAccessGateway/Invoke',
                request_serializer=mxaccess__gateway__pb2.MxCommandRequest.SerializeToString,
                response_deserializer=mxaccess__gateway__pb2.MxCommandReply.FromString,
                _registered_method=True)
        self.StreamEvents = channel.unary_stream(
                '/mxaccess_gateway.v1.MxAccessGateway/StreamEvents',
                request_serializer=mxaccess__gateway__pb2.StreamEventsRequest.SerializeToString,
                response_deserializer=mxaccess__gateway__pb2.MxEvent.FromString,
                _registered_method=True)
        self.AcknowledgeAlarm = channel.unary_unary(
                '/mxaccess_gateway.v1.MxAccessGateway/AcknowledgeAlarm',
                request_serializer=mxaccess__gateway__pb2.AcknowledgeAlarmRequest.SerializeToString,
                response_deserializer=mxaccess__gateway__pb2.AcknowledgeAlarmReply.FromString,
                _registered_method=True)
        self.StreamAlarms = channel.unary_stream(
                '/mxaccess_gateway.v1.MxAccessGateway/StreamAlarms',
                request_serializer=mxaccess__gateway__pb2.StreamAlarmsRequest.SerializeToString,
                response_deserializer=mxaccess__gateway__pb2.AlarmFeedMessage.FromString,
                _registered_method=True)
        self.QueryActiveAlarms = channel.unary_stream(
                '/mxaccess_gateway.v1.MxAccessGateway/QueryActiveAlarms',
                request_serializer=mxaccess__gateway__pb2.QueryActiveAlarmsRequest.SerializeToString,
                response_deserializer=mxaccess__gateway__pb2.ActiveAlarmSnapshot.FromString,
                _registered_method=True)


class MxAccessGatewayServicer(object):
    """Wire-compatibility policy (ProtobufStyleGuide): this contract evolves
    additively only. Never renumber or repurpose an existing field number or
    enum value. When a field or enum value is removed, add a `reserved` range
    (and `reserved` name) covering it in the same change so a future editor
    cannot accidentally reuse the retired tag.

    Public client API for MXAccess sessions hosted by the gateway.
    """

    def OpenSession(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 CloseSession(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 Invoke(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 StreamEvents(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 AcknowledgeAlarm(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 StreamAlarms(self, request, context):
        """Session-less central alarm feed. The stream opens with the current
        active-alarm snapshot (one `active_alarm` per alarm), then a single
        `snapshot_complete`, then a `transition` for every subsequent change.
        Served by the gateway's always-on alarm monitor; any number of clients
        fan out from the single monitor without opening a worker session.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def QueryActiveAlarms(self, request, context):
        """Point-in-time snapshot of the currently-active alarm set served from the
        gateway's always-on alarm monitor cache (session-less). Used after a
        reconnect to seed Part 9 client state, or to reconcile alarms that may
        have been missed during a transport blip. Streamed so callers can
        begin processing without buffering the full set.
        `QueryActiveAlarmsRequest.alarm_filter_prefix` optionally narrows the
        snapshot to alarms whose `alarm_full_reference` starts with the given
        prefix; an empty prefix returns the full set.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')


def add_MxAccessGatewayServicer_to_server(servicer, server):
    rpc_method_handlers = {
            'OpenSession': grpc.unary_unary_rpc_method_handler(
                    servicer.OpenSession,
                    request_deserializer=mxaccess__gateway__pb2.OpenSessionRequest.FromString,
                    response_serializer=mxaccess__gateway__pb2.OpenSessionReply.SerializeToString,
            ),
            'CloseSession': grpc.unary_unary_rpc_method_handler(
                    servicer.CloseSession,
                    request_deserializer=mxaccess__gateway__pb2.CloseSessionRequest.FromString,
                    response_serializer=mxaccess__gateway__pb2.CloseSessionReply.SerializeToString,
            ),
            'Invoke': grpc.unary_unary_rpc_method_handler(
                    servicer.Invoke,
                    request_deserializer=mxaccess__gateway__pb2.MxCommandRequest.FromString,
                    response_serializer=mxaccess__gateway__pb2.MxCommandReply.SerializeToString,
            ),
            'StreamEvents': grpc.unary_stream_rpc_method_handler(
                    servicer.StreamEvents,
                    request_deserializer=mxaccess__gateway__pb2.StreamEventsRequest.FromString,
                    response_serializer=mxaccess__gateway__pb2.MxEvent.SerializeToString,
            ),
            'AcknowledgeAlarm': grpc.unary_unary_rpc_method_handler(
                    servicer.AcknowledgeAlarm,
                    request_deserializer=mxaccess__gateway__pb2.AcknowledgeAlarmRequest.FromString,
                    response_serializer=mxaccess__gateway__pb2.AcknowledgeAlarmReply.SerializeToString,
            ),
            'StreamAlarms': grpc.unary_stream_rpc_method_handler(
                    servicer.StreamAlarms,
                    request_deserializer=mxaccess__gateway__pb2.StreamAlarmsRequest.FromString,
                    response_serializer=mxaccess__gateway__pb2.AlarmFeedMessage.SerializeToString,
            ),
            'QueryActiveAlarms': grpc.unary_stream_rpc_method_handler(
                    servicer.QueryActiveAlarms,
                    request_deserializer=mxaccess__gateway__pb2.QueryActiveAlarmsRequest.FromString,
                    response_serializer=mxaccess__gateway__pb2.ActiveAlarmSnapshot.SerializeToString,
            ),
    }
    generic_handler = grpc.method_handlers_generic_handler(
            'mxaccess_gateway.v1.MxAccessGateway', rpc_method_handlers)
    server.add_generic_rpc_handlers((generic_handler,))
    server.add_registered_method_handlers('mxaccess_gateway.v1.MxAccessGateway', rpc_method_handlers)


 # This class is part of an EXPERIMENTAL API.
class MxAccessGateway(object):
    """Wire-compatibility policy (ProtobufStyleGuide): this contract evolves
    additively only. Never renumber or repurpose an existing field number or
    enum value. When a field or enum value is removed, add a `reserved` range
    (and `reserved` name) covering it in the same change so a future editor
    cannot accidentally reuse the retired tag.

    Public client API for MXAccess sessions hosted by the gateway.
    """

    @staticmethod
    def OpenSession(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,
            '/mxaccess_gateway.v1.MxAccessGateway/OpenSession',
            mxaccess__gateway__pb2.OpenSessionRequest.SerializeToString,
            mxaccess__gateway__pb2.OpenSessionReply.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def CloseSession(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,
            '/mxaccess_gateway.v1.MxAccessGateway/CloseSession',
            mxaccess__gateway__pb2.CloseSessionRequest.SerializeToString,
            mxaccess__gateway__pb2.CloseSessionReply.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def Invoke(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,
            '/mxaccess_gateway.v1.MxAccessGateway/Invoke',
            mxaccess__gateway__pb2.MxCommandRequest.SerializeToString,
            mxaccess__gateway__pb2.MxCommandReply.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def StreamEvents(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_stream(
            request,
            target,
            '/mxaccess_gateway.v1.MxAccessGateway/StreamEvents',
            mxaccess__gateway__pb2.StreamEventsRequest.SerializeToString,
            mxaccess__gateway__pb2.MxEvent.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def AcknowledgeAlarm(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,
            '/mxaccess_gateway.v1.MxAccessGateway/AcknowledgeAlarm',
            mxaccess__gateway__pb2.AcknowledgeAlarmRequest.SerializeToString,
            mxaccess__gateway__pb2.AcknowledgeAlarmReply.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def StreamAlarms(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_stream(
            request,
            target,
            '/mxaccess_gateway.v1.MxAccessGateway/StreamAlarms',
            mxaccess__gateway__pb2.StreamAlarmsRequest.SerializeToString,
            mxaccess__gateway__pb2.AlarmFeedMessage.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def QueryActiveAlarms(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_stream(
            request,
            target,
            '/mxaccess_gateway.v1.MxAccessGateway/QueryActiveAlarms',
            mxaccess__gateway__pb2.QueryActiveAlarmsRequest.SerializeToString,
            mxaccess__gateway__pb2.ActiveAlarmSnapshot.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)
