From 13321fb9b5af03f4b208b17fd4ff20995db41fd2 Mon Sep 17 00:00:00 2001 From: SantaSpeen Date: Thu, 13 Jul 2023 13:29:37 +0300 Subject: [PATCH] Minor update --- src/core/udp_server.py | 50 ++++++++++++++++++++++------------------- src/core/udp_server.pyi | 3 ++- 2 files changed, 29 insertions(+), 24 deletions(-) diff --git a/src/core/udp_server.py b/src/core/udp_server.py index 8849d2d..1513225 100644 --- a/src/core/udp_server.py +++ b/src/core/udp_server.py @@ -14,43 +14,47 @@ class UDPServer: def __init__(self, core, host, port): self.log = utils.get_logger("UDPServer") + self.loop = asyncio.get_event_loop() self.Core = core self.host = host self.port = port - self.loop = asyncio.get_event_loop() + self.run = False - async def handle_client(self, srv_sock): + async def handle_client(self, reader, writer): while True: try: - data, addr = await self.loop.sock_recv(srv_sock, 1024) + data = await reader.read(1) if not data: break code = data.decode() - self.log.debug(f"Received {code!r} from {addr!r}") - # if not await self.handle_code(code, sock): - # break + self.log.debug(f"Received {code!r} from {writer.get_extra_info('sockname')!r}") + # await self.handle_code(code, reader, writer) + # task = asyncio.create_task(self.handle_code(code, reader, writer)) + # await asyncio.wait([task], return_when=asyncio.FIRST_EXCEPTION) + if not writer.is_closing(): + writer.close() + self.log.debug("Disconnected.") + break except Exception as e: + self.log.error("Error while connecting..") self.log.error(f"Error: {e}") traceback.print_exc() break - srv_sock.close() - self.log.error("Error while connecting..") async def start(self): - pass - # self.log.debug("Starting UDP server.") - # await self.stop() - # srv_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) - # srv_sock.bind((self.host, self.port)) - # self.log.debug(f"Serving on {srv_sock.getsockname()}") - # try: - # await self.handle_client(srv_sock) - # except Exception as e: - # self.log.error(f"Error: {e}") - # traceback.print_exc() - # finally: - # await self.stop() + self.log.debug("Starting UDP server.") + self.run = True + try: + pass + except OSError as e: + self.log.error("Cannot bind port or other error") + raise e + except BaseException as e: + self.log.error(f"Error: {e}") + raise e + finally: + self.run = False + self.Core.run = False def stop(self): - pass - # self.log.debug("Stopping UDP server") + self.log.debug("Stopping UDP server") diff --git a/src/core/udp_server.pyi b/src/core/udp_server.pyi index 57a2cf8..b48f49d 100644 --- a/src/core/udp_server.pyi +++ b/src/core/udp_server.pyi @@ -13,10 +13,11 @@ class UDPServer: def __init__(self, core, host, port): self.log = utils.get_logger("UDPServer") + self.loop = asyncio.get_event_loop() self.Core = core self.host = host self.port = port - self.loop = asyncio.get_event_loop() + self.run = False async def handle_client(self, srv_sock) -> None: ... async def start(self) -> None: ...