From 6242ff4129190f6ae869c720e0ddce2346616a30 Mon Sep 17 00:00:00 2001 From: SantaSpeen Date: Sat, 8 Jul 2023 02:18:32 +0300 Subject: [PATCH] Refactoring --- src/core/core.py | 34 +++++++++++++++++++++------------- src/core/core.pyi | 21 +++++++++++++-------- 2 files changed, 34 insertions(+), 21 deletions(-) diff --git a/src/core/core.py b/src/core/core.py index e1e0e5c..c3f476f 100644 --- a/src/core/core.py +++ b/src/core/core.py @@ -84,11 +84,14 @@ class Core: if sock: return self.clients.get(sock.getsockname()) + def insert_client(self, client): + self.clients.update({client.cid: client, client.nick: client}) + def create_client(self, *args, **kwargs): cl = Client(*args, **kwargs) self.clients_counter += 1 cl.id = self.clients_counter - self.clients.update({cl.id: cl}) + cl._update_logger() return cl async def check_alive(self): @@ -100,19 +103,24 @@ class Core: self.log.debug(f"Client ID: {cl.id} died...") async def main(self): - self.tcp = self.tcp(self, self.server_ip, self.server_port) - self.udp = self.udp(self, self.server_ip, self.server_port) - self.log.info(i18n.ready) + self.tcp = self.tcp(self, self.server_ip, self.server_port) + self.udp = self.udp(self, self.server_ip, self.server_port) + tasks = [self.tcp.start(), self.udp.start(), console.start()] # self.check_alive() + t = asyncio.wait(tasks, return_when=asyncio.FIRST_EXCEPTION) + self.log.info(i18n.ready) + ev.call_event("on_started") + await t # while True: - try: - tasks = [console.start(), self.tcp.start(), self.udp.start()] # self.check_alive() - await asyncio.wait(tasks, return_when=asyncio.FIRST_EXCEPTION) - except Exception as e: - await asyncio.sleep(1) - print("Error: " + str(e)) - traceback.print_exc() - except KeyboardInterrupt: - raise KeyboardInterrupt + # try: + # tasks = [console.start(), self.tcp.start(), self.udp.start()] # self.check_alive() + # await asyncio.wait(tasks, return_when=asyncio.FIRST_EXCEPTION) + # except Exception as e: + # await asyncio.sleep(1) + # print("Error: " + str(e)) + # traceback.print_exc() + # break + # except KeyboardInterrupt: + # raise KeyboardInterrupt def start(self): asyncio.run(self.main()) diff --git a/src/core/core.pyi b/src/core/core.pyi index 566a186..d39380b 100644 --- a/src/core/core.pyi +++ b/src/core/core.pyi @@ -14,17 +14,21 @@ from .tcp_server import TCPServer from .udp_server import UDPServer class Client: - def __init__(self, sock: socket.socket): - self.cid = 0 - self.nick = None - self.log = utils.get_logger("client") - self.addr = sock.getsockname() - self.socket = sock + def __init__(self, reader: StreamReader, writer: StreamWriter): + self.reader = reader + self.writer = writer + self.log = utils.get_logger("client(id: )") + self.addr = writer.get_extra_info("sockname") self.loop = asyncio.get_event_loop() + self.cid = 0 + self.key: str = None + self.nick: str = None + self.roles: str = None + self.guest = True self.alive = True def is_disconnected(self) -> bool: ... - def kick(self, reason: str) -> None: ... - def tcp_send(self, data: bytes) -> None: ... + async def kick(self, reason: str) -> None: ... + async def tcp_send(self, data: bytes) -> None: ... class Core: @@ -37,6 +41,7 @@ class Core: self.loop = asyncio.get_event_loop() self.tcp = TCPServer self.udp = UDPServer + def insert_client(self, client: Client) -> None: ... def create_client(self, *args, **kwargs) -> Client: ... async def check_alive(self) -> None: ... async def main(self) -> None: ...