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

from zeebe_grpc import gateway_pb2 as zeebe__grpc_dot_gateway__pb2


class GatewayStub(object):
    """Missing associated documentation comment in .proto file."""

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

        Args:
            channel: A grpc.Channel.
        """
        self.ActivateJobs = channel.unary_stream(
                '/gateway_protocol.Gateway/ActivateJobs',
                request_serializer=zeebe__grpc_dot_gateway__pb2.ActivateJobsRequest.SerializeToString,
                response_deserializer=zeebe__grpc_dot_gateway__pb2.ActivateJobsResponse.FromString,
                )
        self.CancelProcessInstance = channel.unary_unary(
                '/gateway_protocol.Gateway/CancelProcessInstance',
                request_serializer=zeebe__grpc_dot_gateway__pb2.CancelProcessInstanceRequest.SerializeToString,
                response_deserializer=zeebe__grpc_dot_gateway__pb2.CancelProcessInstanceResponse.FromString,
                )
        self.CompleteJob = channel.unary_unary(
                '/gateway_protocol.Gateway/CompleteJob',
                request_serializer=zeebe__grpc_dot_gateway__pb2.CompleteJobRequest.SerializeToString,
                response_deserializer=zeebe__grpc_dot_gateway__pb2.CompleteJobResponse.FromString,
                )
        self.CreateProcessInstance = channel.unary_unary(
                '/gateway_protocol.Gateway/CreateProcessInstance',
                request_serializer=zeebe__grpc_dot_gateway__pb2.CreateProcessInstanceRequest.SerializeToString,
                response_deserializer=zeebe__grpc_dot_gateway__pb2.CreateProcessInstanceResponse.FromString,
                )
        self.CreateProcessInstanceWithResult = channel.unary_unary(
                '/gateway_protocol.Gateway/CreateProcessInstanceWithResult',
                request_serializer=zeebe__grpc_dot_gateway__pb2.CreateProcessInstanceWithResultRequest.SerializeToString,
                response_deserializer=zeebe__grpc_dot_gateway__pb2.CreateProcessInstanceWithResultResponse.FromString,
                )
        self.DeployProcess = channel.unary_unary(
                '/gateway_protocol.Gateway/DeployProcess',
                request_serializer=zeebe__grpc_dot_gateway__pb2.DeployProcessRequest.SerializeToString,
                response_deserializer=zeebe__grpc_dot_gateway__pb2.DeployProcessResponse.FromString,
                )
        self.FailJob = channel.unary_unary(
                '/gateway_protocol.Gateway/FailJob',
                request_serializer=zeebe__grpc_dot_gateway__pb2.FailJobRequest.SerializeToString,
                response_deserializer=zeebe__grpc_dot_gateway__pb2.FailJobResponse.FromString,
                )
        self.ThrowError = channel.unary_unary(
                '/gateway_protocol.Gateway/ThrowError',
                request_serializer=zeebe__grpc_dot_gateway__pb2.ThrowErrorRequest.SerializeToString,
                response_deserializer=zeebe__grpc_dot_gateway__pb2.ThrowErrorResponse.FromString,
                )
        self.PublishMessage = channel.unary_unary(
                '/gateway_protocol.Gateway/PublishMessage',
                request_serializer=zeebe__grpc_dot_gateway__pb2.PublishMessageRequest.SerializeToString,
                response_deserializer=zeebe__grpc_dot_gateway__pb2.PublishMessageResponse.FromString,
                )
        self.ResolveIncident = channel.unary_unary(
                '/gateway_protocol.Gateway/ResolveIncident',
                request_serializer=zeebe__grpc_dot_gateway__pb2.ResolveIncidentRequest.SerializeToString,
                response_deserializer=zeebe__grpc_dot_gateway__pb2.ResolveIncidentResponse.FromString,
                )
        self.SetVariables = channel.unary_unary(
                '/gateway_protocol.Gateway/SetVariables',
                request_serializer=zeebe__grpc_dot_gateway__pb2.SetVariablesRequest.SerializeToString,
                response_deserializer=zeebe__grpc_dot_gateway__pb2.SetVariablesResponse.FromString,
                )
        self.Topology = channel.unary_unary(
                '/gateway_protocol.Gateway/Topology',
                request_serializer=zeebe__grpc_dot_gateway__pb2.TopologyRequest.SerializeToString,
                response_deserializer=zeebe__grpc_dot_gateway__pb2.TopologyResponse.FromString,
                )
        self.UpdateJobRetries = channel.unary_unary(
                '/gateway_protocol.Gateway/UpdateJobRetries',
                request_serializer=zeebe__grpc_dot_gateway__pb2.UpdateJobRetriesRequest.SerializeToString,
                response_deserializer=zeebe__grpc_dot_gateway__pb2.UpdateJobRetriesResponse.FromString,
                )


class GatewayServicer(object):
    """Missing associated documentation comment in .proto file."""

    def ActivateJobs(self, request, context):
        """
        Iterates through all known partitions round-robin and activates up to the requested
        maximum and streams them back to the client as they are activated.

        Errors:
        INVALID_ARGUMENT:
        - type is blank (empty string, null)
        - worker is blank (empty string, null)
        - timeout less than 1
        - maxJobsToActivate is less than 1
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def CancelProcessInstance(self, request, context):
        """
        Cancels a running process instance

        Errors:
        NOT_FOUND:
        - no process instance exists with the given key
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def CompleteJob(self, request, context):
        """
        Completes a job with the given variables, which allows completing the associated service task.

        Errors:
        NOT_FOUND:
        - no job exists with the given job key. Note that since jobs are removed once completed,
        it could be that this job did exist at some point.

        FAILED_PRECONDITION:
        - the job was marked as failed. In that case, the related incident must be resolved before
        the job can be activated again and completed.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def CreateProcessInstance(self, request, context):
        """
        Creates and starts an instance of the specified process. The process definition to use to
        create the instance can be specified either using its unique key (as returned by
        DeployProcess), or using the BPMN process ID and a version. Pass -1 as the version to use the
        latest deployed version. Note that only processes with none start events can be started through
        this command.

        Errors:
        NOT_FOUND:
        - no process with the given key exists (if processDefinitionKey was given)
        - no process with the given process ID exists (if bpmnProcessId was given but version was -1)
        - no process with the given process ID and version exists (if both bpmnProcessId and version were given)

        FAILED_PRECONDITION:
        - the process definition does not contain a none start event; only processes with none
        start event can be started manually.

        INVALID_ARGUMENT:
        - the given variables argument is not a valid JSON document; it is expected to be a valid
        JSON document where the root node is an object.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def CreateProcessInstanceWithResult(self, request, context):
        """
        Behaves similarly to `rpc CreateProcessInstance`, except that a successful response is received when the process completes successfully.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def DeployProcess(self, request, context):
        """
        Deploys one or more processes to Zeebe. Note that this is an atomic call,
        i.e. either all processes are deployed, or none of them are.

        Errors:
        INVALID_ARGUMENT:
        - no resources given.
        - if at least one resource is invalid. A resource is considered invalid if:
        - the resource data is not deserializable (e.g. detected as BPMN, but it's broken XML)
        - the process is invalid (e.g. an event-based gateway has an outgoing sequence flow to a task)
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def FailJob(self, request, context):
        """
        Marks the job as failed; if the retries argument is positive, then the job will be immediately
        activatable again, and a worker could try again to process it. If it is zero or negative however,
        an incident will be raised, tagged with the given errorMessage, and the job will not be
        activatable until the incident is resolved.

        Errors:
        NOT_FOUND:
        - no job was found with the given key

        FAILED_PRECONDITION:
        - the job was not activated
        - the job is already in a failed state, i.e. ran out of retries
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ThrowError(self, request, context):
        """
        Reports a business error (i.e. non-technical) that occurs while processing a job. The error is handled in the process by an error catch event. If there is no error catch event with the specified errorCode then an incident will be raised instead.

        Errors:
        NOT_FOUND:
        - no job was found with the given key

        FAILED_PRECONDITION:
        - the job is not in an activated state
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def PublishMessage(self, request, context):
        """
        Publishes a single message. Messages are published to specific partitions computed from their
        correlation keys.

        Errors:
        ALREADY_EXISTS:
        - a message with the same ID was previously published (and is still alive)
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ResolveIncident(self, request, context):
        """
        Resolves a given incident. This simply marks the incident as resolved; most likely a call to
        UpdateJobRetries or SetVariables will be necessary to actually resolve the
        problem, following by this call.

        Errors:
        NOT_FOUND:
        - no incident with the given key exists
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def SetVariables(self, request, context):
        """
        Updates all the variables of a particular scope (e.g. process instance, flow element instance)
        from the given JSON document.

        Errors:
        NOT_FOUND:
        - no element with the given elementInstanceKey exists
        INVALID_ARGUMENT:
        - the given variables document is not a valid JSON document; valid documents are expected to
        be JSON documents where the root node is an object.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def Topology(self, request, context):
        """
        Obtains the current topology of the cluster the gateway is part of.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def UpdateJobRetries(self, request, context):
        """
        Updates the number of retries a job has left. This is mostly useful for jobs that have run out of
        retries, should the underlying problem be solved.

        Errors:
        NOT_FOUND:
        - no job exists with the given key

        INVALID_ARGUMENT:
        - retries is not greater than 0
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')


def add_GatewayServicer_to_server(servicer, server):
    rpc_method_handlers = {
            'ActivateJobs': grpc.unary_stream_rpc_method_handler(
                    servicer.ActivateJobs,
                    request_deserializer=zeebe__grpc_dot_gateway__pb2.ActivateJobsRequest.FromString,
                    response_serializer=zeebe__grpc_dot_gateway__pb2.ActivateJobsResponse.SerializeToString,
            ),
            'CancelProcessInstance': grpc.unary_unary_rpc_method_handler(
                    servicer.CancelProcessInstance,
                    request_deserializer=zeebe__grpc_dot_gateway__pb2.CancelProcessInstanceRequest.FromString,
                    response_serializer=zeebe__grpc_dot_gateway__pb2.CancelProcessInstanceResponse.SerializeToString,
            ),
            'CompleteJob': grpc.unary_unary_rpc_method_handler(
                    servicer.CompleteJob,
                    request_deserializer=zeebe__grpc_dot_gateway__pb2.CompleteJobRequest.FromString,
                    response_serializer=zeebe__grpc_dot_gateway__pb2.CompleteJobResponse.SerializeToString,
            ),
            'CreateProcessInstance': grpc.unary_unary_rpc_method_handler(
                    servicer.CreateProcessInstance,
                    request_deserializer=zeebe__grpc_dot_gateway__pb2.CreateProcessInstanceRequest.FromString,
                    response_serializer=zeebe__grpc_dot_gateway__pb2.CreateProcessInstanceResponse.SerializeToString,
            ),
            'CreateProcessInstanceWithResult': grpc.unary_unary_rpc_method_handler(
                    servicer.CreateProcessInstanceWithResult,
                    request_deserializer=zeebe__grpc_dot_gateway__pb2.CreateProcessInstanceWithResultRequest.FromString,
                    response_serializer=zeebe__grpc_dot_gateway__pb2.CreateProcessInstanceWithResultResponse.SerializeToString,
            ),
            'DeployProcess': grpc.unary_unary_rpc_method_handler(
                    servicer.DeployProcess,
                    request_deserializer=zeebe__grpc_dot_gateway__pb2.DeployProcessRequest.FromString,
                    response_serializer=zeebe__grpc_dot_gateway__pb2.DeployProcessResponse.SerializeToString,
            ),
            'FailJob': grpc.unary_unary_rpc_method_handler(
                    servicer.FailJob,
                    request_deserializer=zeebe__grpc_dot_gateway__pb2.FailJobRequest.FromString,
                    response_serializer=zeebe__grpc_dot_gateway__pb2.FailJobResponse.SerializeToString,
            ),
            'ThrowError': grpc.unary_unary_rpc_method_handler(
                    servicer.ThrowError,
                    request_deserializer=zeebe__grpc_dot_gateway__pb2.ThrowErrorRequest.FromString,
                    response_serializer=zeebe__grpc_dot_gateway__pb2.ThrowErrorResponse.SerializeToString,
            ),
            'PublishMessage': grpc.unary_unary_rpc_method_handler(
                    servicer.PublishMessage,
                    request_deserializer=zeebe__grpc_dot_gateway__pb2.PublishMessageRequest.FromString,
                    response_serializer=zeebe__grpc_dot_gateway__pb2.PublishMessageResponse.SerializeToString,
            ),
            'ResolveIncident': grpc.unary_unary_rpc_method_handler(
                    servicer.ResolveIncident,
                    request_deserializer=zeebe__grpc_dot_gateway__pb2.ResolveIncidentRequest.FromString,
                    response_serializer=zeebe__grpc_dot_gateway__pb2.ResolveIncidentResponse.SerializeToString,
            ),
            'SetVariables': grpc.unary_unary_rpc_method_handler(
                    servicer.SetVariables,
                    request_deserializer=zeebe__grpc_dot_gateway__pb2.SetVariablesRequest.FromString,
                    response_serializer=zeebe__grpc_dot_gateway__pb2.SetVariablesResponse.SerializeToString,
            ),
            'Topology': grpc.unary_unary_rpc_method_handler(
                    servicer.Topology,
                    request_deserializer=zeebe__grpc_dot_gateway__pb2.TopologyRequest.FromString,
                    response_serializer=zeebe__grpc_dot_gateway__pb2.TopologyResponse.SerializeToString,
            ),
            'UpdateJobRetries': grpc.unary_unary_rpc_method_handler(
                    servicer.UpdateJobRetries,
                    request_deserializer=zeebe__grpc_dot_gateway__pb2.UpdateJobRetriesRequest.FromString,
                    response_serializer=zeebe__grpc_dot_gateway__pb2.UpdateJobRetriesResponse.SerializeToString,
            ),
    }
    generic_handler = grpc.method_handlers_generic_handler(
            'gateway_protocol.Gateway', rpc_method_handlers)
    server.add_generic_rpc_handlers((generic_handler,))


 # This class is part of an EXPERIMENTAL API.
class Gateway(object):
    """Missing associated documentation comment in .proto file."""

    @staticmethod
    def ActivateJobs(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, '/gateway_protocol.Gateway/ActivateJobs',
            zeebe__grpc_dot_gateway__pb2.ActivateJobsRequest.SerializeToString,
            zeebe__grpc_dot_gateway__pb2.ActivateJobsResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def CancelProcessInstance(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, '/gateway_protocol.Gateway/CancelProcessInstance',
            zeebe__grpc_dot_gateway__pb2.CancelProcessInstanceRequest.SerializeToString,
            zeebe__grpc_dot_gateway__pb2.CancelProcessInstanceResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def CompleteJob(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, '/gateway_protocol.Gateway/CompleteJob',
            zeebe__grpc_dot_gateway__pb2.CompleteJobRequest.SerializeToString,
            zeebe__grpc_dot_gateway__pb2.CompleteJobResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def CreateProcessInstance(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, '/gateway_protocol.Gateway/CreateProcessInstance',
            zeebe__grpc_dot_gateway__pb2.CreateProcessInstanceRequest.SerializeToString,
            zeebe__grpc_dot_gateway__pb2.CreateProcessInstanceResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def CreateProcessInstanceWithResult(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, '/gateway_protocol.Gateway/CreateProcessInstanceWithResult',
            zeebe__grpc_dot_gateway__pb2.CreateProcessInstanceWithResultRequest.SerializeToString,
            zeebe__grpc_dot_gateway__pb2.CreateProcessInstanceWithResultResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def DeployProcess(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, '/gateway_protocol.Gateway/DeployProcess',
            zeebe__grpc_dot_gateway__pb2.DeployProcessRequest.SerializeToString,
            zeebe__grpc_dot_gateway__pb2.DeployProcessResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def FailJob(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, '/gateway_protocol.Gateway/FailJob',
            zeebe__grpc_dot_gateway__pb2.FailJobRequest.SerializeToString,
            zeebe__grpc_dot_gateway__pb2.FailJobResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ThrowError(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, '/gateway_protocol.Gateway/ThrowError',
            zeebe__grpc_dot_gateway__pb2.ThrowErrorRequest.SerializeToString,
            zeebe__grpc_dot_gateway__pb2.ThrowErrorResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def PublishMessage(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, '/gateway_protocol.Gateway/PublishMessage',
            zeebe__grpc_dot_gateway__pb2.PublishMessageRequest.SerializeToString,
            zeebe__grpc_dot_gateway__pb2.PublishMessageResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def ResolveIncident(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, '/gateway_protocol.Gateway/ResolveIncident',
            zeebe__grpc_dot_gateway__pb2.ResolveIncidentRequest.SerializeToString,
            zeebe__grpc_dot_gateway__pb2.ResolveIncidentResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def SetVariables(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, '/gateway_protocol.Gateway/SetVariables',
            zeebe__grpc_dot_gateway__pb2.SetVariablesRequest.SerializeToString,
            zeebe__grpc_dot_gateway__pb2.SetVariablesResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def Topology(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, '/gateway_protocol.Gateway/Topology',
            zeebe__grpc_dot_gateway__pb2.TopologyRequest.SerializeToString,
            zeebe__grpc_dot_gateway__pb2.TopologyResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def UpdateJobRetries(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, '/gateway_protocol.Gateway/UpdateJobRetries',
            zeebe__grpc_dot_gateway__pb2.UpdateJobRetriesRequest.SerializeToString,
            zeebe__grpc_dot_gateway__pb2.UpdateJobRetriesResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
