Refactoring

This commit is contained in:
Maxim Khomutov 2023-07-08 02:18:32 +03:00
parent 482615af22
commit 6242ff4129
2 changed files with 34 additions and 21 deletions

View File

@ -84,11 +84,14 @@ class Core:
if sock: if sock:
return self.clients.get(sock.getsockname()) 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): def create_client(self, *args, **kwargs):
cl = Client(*args, **kwargs) cl = Client(*args, **kwargs)
self.clients_counter += 1 self.clients_counter += 1
cl.id = self.clients_counter cl.id = self.clients_counter
self.clients.update({cl.id: cl}) cl._update_logger()
return cl return cl
async def check_alive(self): async def check_alive(self):
@ -102,17 +105,22 @@ class Core:
async def main(self): async def main(self):
self.tcp = self.tcp(self, self.server_ip, self.server_port) self.tcp = self.tcp(self, self.server_ip, self.server_port)
self.udp = self.udp(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) self.log.info(i18n.ready)
ev.call_event("on_started")
await t
# while True: # while True:
try: # try:
tasks = [console.start(), self.tcp.start(), self.udp.start()] # self.check_alive() # tasks = [console.start(), self.tcp.start(), self.udp.start()] # self.check_alive()
await asyncio.wait(tasks, return_when=asyncio.FIRST_EXCEPTION) # await asyncio.wait(tasks, return_when=asyncio.FIRST_EXCEPTION)
except Exception as e: # except Exception as e:
await asyncio.sleep(1) # await asyncio.sleep(1)
print("Error: " + str(e)) # print("Error: " + str(e))
traceback.print_exc() # traceback.print_exc()
except KeyboardInterrupt: # break
raise KeyboardInterrupt # except KeyboardInterrupt:
# raise KeyboardInterrupt
def start(self): def start(self):
asyncio.run(self.main()) asyncio.run(self.main())

View File

@ -14,17 +14,21 @@ from .tcp_server import TCPServer
from .udp_server import UDPServer from .udp_server import UDPServer
class Client: class Client:
def __init__(self, sock: socket.socket): def __init__(self, reader: StreamReader, writer: StreamWriter):
self.cid = 0 self.reader = reader
self.nick = None self.writer = writer
self.log = utils.get_logger("client") self.log = utils.get_logger("client(id: )")
self.addr = sock.getsockname() self.addr = writer.get_extra_info("sockname")
self.socket = sock
self.loop = asyncio.get_event_loop() 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 self.alive = True
def is_disconnected(self) -> bool: ... def is_disconnected(self) -> bool: ...
def kick(self, reason: str) -> None: ... async def kick(self, reason: str) -> None: ...
def tcp_send(self, data: bytes) -> None: ... async def tcp_send(self, data: bytes) -> None: ...
class Core: class Core:
@ -37,6 +41,7 @@ class Core:
self.loop = asyncio.get_event_loop() self.loop = asyncio.get_event_loop()
self.tcp = TCPServer self.tcp = TCPServer
self.udp = UDPServer self.udp = UDPServer
def insert_client(self, client: Client) -> None: ...
def create_client(self, *args, **kwargs) -> Client: ... def create_client(self, *args, **kwargs) -> Client: ...
async def check_alive(self) -> None: ... async def check_alive(self) -> None: ...
async def main(self) -> None: ... async def main(self) -> None: ...