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

from ..common import Common_pb2 as common_dot_Common__pb2
from ..logging import Logging_pb2 as logging_dot_Logging__pb2


class LogReportServiceStub(object):
    """Report collected logs into the OAP backend
    """

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

        Args:
            channel: A grpc.Channel.
        """
        self.collect = channel.stream_unary(
                '/skywalking.v3.LogReportService/collect',
                request_serializer=logging_dot_Logging__pb2.LogData.SerializeToString,
                response_deserializer=common_dot_Common__pb2.Commands.FromString,
                )


class LogReportServiceServicer(object):
    """Report collected logs into the OAP backend
    """

    def collect(self, request_iterator, context):
        """Recommend to report log data in a stream mode.
        The service/instance/endpoint of the log could share the previous value if they are not set.
        Reporting the logs of same service in the batch mode could reduce the network cost.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')


def add_LogReportServiceServicer_to_server(servicer, server):
    rpc_method_handlers = {
            'collect': grpc.stream_unary_rpc_method_handler(
                    servicer.collect,
                    request_deserializer=logging_dot_Logging__pb2.LogData.FromString,
                    response_serializer=common_dot_Common__pb2.Commands.SerializeToString,
            ),
    }
    generic_handler = grpc.method_handlers_generic_handler(
            'skywalking.v3.LogReportService', rpc_method_handlers)
    server.add_generic_rpc_handlers((generic_handler,))


 # This class is part of an EXPERIMENTAL API.
class LogReportService(object):
    """Report collected logs into the OAP backend
    """

    @staticmethod
    def collect(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, '/skywalking.v3.LogReportService/collect',
            logging_dot_Logging__pb2.LogData.SerializeToString,
            common_dot_Common__pb2.Commands.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
