| # 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() |