blob: df31ccf6e2810c7f4857c1bfb297b0121c7369fc [file] [log] [blame] [edit]
# Copyright 2023 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""The definition of the grpc server for sdk server."""
import asyncio
import atexit
from concurrent import futures
from typing import List, Optional
import grpc # pylint: disable=import-error
from chromite.contrib.sdk_server.grpc_server import sdk_server_defs_grpc
from chromite.contrib.sdk_server.grpc_server import sdk_server_pb2_grpc
from chromite.lib import sudo
async def serve() -> None:
server = grpc.server(futures.ThreadPoolExecutor(max_workers=None))
servicer = sdk_server_defs_grpc.SdkChroot()
sdk_server_pb2_grpc.add_sdk_server_serviceServicer_to_server(
servicer, server
)
server.add_insecure_port("[::]:50051")
server.start()
def stop_server():
server.stop(5)
atexit.register(stop_server)
server.wait_for_termination(timeout=None)
def run():
with sudo.SudoKeepAlive():
asyncio.run(serve())
def main(argv: Optional[List[str]] = None) -> Optional[int]:
run()