From 7648c992aaa2db078d37ffdf946e7d97f23793f4 Mon Sep 17 00:00:00 2001 From: SantaSpeen Date: Fri, 7 Jul 2023 18:52:00 +0300 Subject: [PATCH] Add stop func --- src/core/tcp_server.py | 24 ++++++++++++++++-------- src/core/tcp_server.pyi | 1 + 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/core/tcp_server.py b/src/core/tcp_server.py index e0a06ac..b907248 100644 --- a/src/core/tcp_server.py +++ b/src/core/tcp_server.py @@ -117,12 +117,20 @@ class TCPServer: async def start(self): self.log.debug("Starting TCP server.") - server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - server_socket.bind((self.host, self.port)) - server_socket.listen(config.Game["players"]) - self.log.debug(f"Serving on {server_socket.getsockname()}") - server_socket.setblocking(False) + srv_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + srv_sock.bind((self.host, self.port)) + srv_sock.listen(config.Game["players"]) + self.log.debug(f"Serving on {srv_sock.getsockname()}") loop = asyncio.get_event_loop() - while True: - sock, _ = await loop.sock_accept(server_socket) - loop.create_task(self.handle_client(sock)) + try: + while True: + sock, _ = await loop.sock_accept(srv_sock) + loop.create_task(self.handle_client(sock)) + except Exception as e: + self.log.error(f"Error: {e}") + traceback.print_exc() + finally: + await self.stop() + + async def stop(self): + self.log.debug("Stopping TCP server") diff --git a/src/core/tcp_server.pyi b/src/core/tcp_server.pyi index 1e50f07..10c00c7 100644 --- a/src/core/tcp_server.pyi +++ b/src/core/tcp_server.pyi @@ -23,4 +23,5 @@ class TCPServer: async def handle_code(self, code: str, sock: socket.socket) -> None: ... async def handle_client(self, sock: socket.socket) -> None: ... async def start(self) -> None: ... + async def stop(self) -> None: ...