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

View File

@ -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: ...