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

from . import mujoco_ar_pb2 as mujoco__ar__pb2


class MuJoCoARServiceStub(object):
    """Service definition for MuJoCo AR communication
    """

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

        Args:
            channel: A grpc.Channel.
        """
        self.SendUsdzUrl = channel.unary_unary(
                '/mujoco_ar.MuJoCoARService/SendUsdzUrl',
                request_serializer=mujoco__ar__pb2.UsdzUrlRequest.SerializeToString,
                response_deserializer=mujoco__ar__pb2.UsdzUrlResponse.FromString,
                )
        self.SendUsdzData = channel.unary_unary(
                '/mujoco_ar.MuJoCoARService/SendUsdzData',
                request_serializer=mujoco__ar__pb2.UsdzDataRequest.SerializeToString,
                response_deserializer=mujoco__ar__pb2.UsdzDataResponse.FromString,
                )
        self.SendUsdzDataChunked = channel.stream_unary(
                '/mujoco_ar.MuJoCoARService/SendUsdzDataChunked',
                request_serializer=mujoco__ar__pb2.UsdzChunkRequest.SerializeToString,
                response_deserializer=mujoco__ar__pb2.UsdzDataResponse.FromString,
                )
        self.StreamPoses = channel.stream_stream(
                '/mujoco_ar.MuJoCoARService/StreamPoses',
                request_serializer=mujoco__ar__pb2.PoseUpdateRequest.SerializeToString,
                response_deserializer=mujoco__ar__pb2.PoseUpdateResponse.FromString,
                )
        self.UpdatePoses = channel.unary_unary(
                '/mujoco_ar.MuJoCoARService/UpdatePoses',
                request_serializer=mujoco__ar__pb2.PoseUpdateRequest.SerializeToString,
                response_deserializer=mujoco__ar__pb2.PoseUpdateResponse.FromString,
                )
        self.StreamHandTracking = channel.unary_stream(
                '/mujoco_ar.MuJoCoARService/StreamHandTracking',
                request_serializer=mujoco__ar__pb2.HandTrackingRequest.SerializeToString,
                response_deserializer=mujoco__ar__pb2.HandTrackingUpdate.FromString,
                )


class MuJoCoARServiceServicer(object):
    """Service definition for MuJoCo AR communication
    """

    def SendUsdzUrl(self, request, context):
        """Send USDZ URL to VR device
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def SendUsdzData(self, request, context):
        """Send USDZ file data directly
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def SendUsdzDataChunked(self, request_iterator, context):
        """Send USDZ file data in chunks (for large files)
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def StreamPoses(self, request_iterator, context):
        """Stream body pose updates to VR device
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def UpdatePoses(self, request, context):
        """Single pose update (alternative to streaming)
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def StreamHandTracking(self, request, context):
        """Stream hand tracking data from Vision Pro
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')


def add_MuJoCoARServiceServicer_to_server(servicer, server):
    rpc_method_handlers = {
            'SendUsdzUrl': grpc.unary_unary_rpc_method_handler(
                    servicer.SendUsdzUrl,
                    request_deserializer=mujoco__ar__pb2.UsdzUrlRequest.FromString,
                    response_serializer=mujoco__ar__pb2.UsdzUrlResponse.SerializeToString,
            ),
            'SendUsdzData': grpc.unary_unary_rpc_method_handler(
                    servicer.SendUsdzData,
                    request_deserializer=mujoco__ar__pb2.UsdzDataRequest.FromString,
                    response_serializer=mujoco__ar__pb2.UsdzDataResponse.SerializeToString,
            ),
            'SendUsdzDataChunked': grpc.stream_unary_rpc_method_handler(
                    servicer.SendUsdzDataChunked,
                    request_deserializer=mujoco__ar__pb2.UsdzChunkRequest.FromString,
                    response_serializer=mujoco__ar__pb2.UsdzDataResponse.SerializeToString,
            ),
            'StreamPoses': grpc.stream_stream_rpc_method_handler(
                    servicer.StreamPoses,
                    request_deserializer=mujoco__ar__pb2.PoseUpdateRequest.FromString,
                    response_serializer=mujoco__ar__pb2.PoseUpdateResponse.SerializeToString,
            ),
            'UpdatePoses': grpc.unary_unary_rpc_method_handler(
                    servicer.UpdatePoses,
                    request_deserializer=mujoco__ar__pb2.PoseUpdateRequest.FromString,
                    response_serializer=mujoco__ar__pb2.PoseUpdateResponse.SerializeToString,
            ),
            'StreamHandTracking': grpc.unary_stream_rpc_method_handler(
                    servicer.StreamHandTracking,
                    request_deserializer=mujoco__ar__pb2.HandTrackingRequest.FromString,
                    response_serializer=mujoco__ar__pb2.HandTrackingUpdate.SerializeToString,
            ),
    }
    generic_handler = grpc.method_handlers_generic_handler(
            'mujoco_ar.MuJoCoARService', rpc_method_handlers)
    server.add_generic_rpc_handlers((generic_handler,))


 # This class is part of an EXPERIMENTAL API.
class MuJoCoARService(object):
    """Service definition for MuJoCo AR communication
    """

    @staticmethod
    def SendUsdzUrl(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, '/mujoco_ar.MuJoCoARService/SendUsdzUrl',
            mujoco__ar__pb2.UsdzUrlRequest.SerializeToString,
            mujoco__ar__pb2.UsdzUrlResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def SendUsdzData(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, '/mujoco_ar.MuJoCoARService/SendUsdzData',
            mujoco__ar__pb2.UsdzDataRequest.SerializeToString,
            mujoco__ar__pb2.UsdzDataResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def SendUsdzDataChunked(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, '/mujoco_ar.MuJoCoARService/SendUsdzDataChunked',
            mujoco__ar__pb2.UsdzChunkRequest.SerializeToString,
            mujoco__ar__pb2.UsdzDataResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def StreamPoses(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, '/mujoco_ar.MuJoCoARService/StreamPoses',
            mujoco__ar__pb2.PoseUpdateRequest.SerializeToString,
            mujoco__ar__pb2.PoseUpdateResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def UpdatePoses(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, '/mujoco_ar.MuJoCoARService/UpdatePoses',
            mujoco__ar__pb2.PoseUpdateRequest.SerializeToString,
            mujoco__ar__pb2.PoseUpdateResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def StreamHandTracking(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, '/mujoco_ar.MuJoCoARService/StreamHandTracking',
            mujoco__ar__pb2.HandTrackingRequest.SerializeToString,
            mujoco__ar__pb2.HandTrackingUpdate.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
