# Copyright (C) 2021 Simon Biggs

# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at

#     http://www.apache.org/licenses/LICENSE-2.0

# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.


import concurrent
import logging

import grpc

from .proto import hello_world_pb2, hello_world_pb2_grpc


class HelloWorldServicer(hello_world_pb2_grpc.HelloWorldServicer):
    def talk(self, greeting: hello_world_pb2.Greeting):
        return hello_world_pb2.Greeting(content="Hello User!")


def serve():
    server = grpc.server(concurrent.futures.ThreadPoolExecutor(max_workers=10))
    hello_world_pb2_grpc.add_HelloWorldServicer_to_server(HelloWorldServicer, server)

    # TODO: Change this to use 443 instead
    server.add_insecure_port("[::]:50051")

    logging.info("Starting server")
    server.start()
    server.wait_for_termination()


def main():
    logging.basicConfig(level=logging.DEBUG)
    serve()
