# Pre-requisites
import time
from grpc import ServicerContext
from pip_services4_grpc.controllers import GrpcController
from pip_services4_components.config import ConfigParams
from pip_services4_components.refer import References

import summator

import summator_pb2
import summator_pb2_grpc

# gRPC service


class MyGrpcController(GrpcController, summator_pb2_grpc.SummatorServicer):

    def __init__(self):
        super().__init__('my_data_v1')

    def add_servicer_to_server(self, server):
        summator_pb2_grpc.add_SummatorServicer_to_server(self, server)

    def register(self):
        self._register_method("sum", None, self.__sum2)

    def __sum2(self, number: summator_pb2.Number1, context: ServicerContext):
        res = summator.sum(number.value1, number.value2)
        return summator_pb2.Number2(value=res)

# Create service
controller = MyGrpcController()
controller.configure(ConfigParams.from_tuples(
    "connection.protocol", "http",
    "connection.host", "localhost",
    "connection.port", 50057
))

controller.set_references(References())

controller.open(None)