refactor: move cmd_id into net

This commit is contained in:
Naruse
2024-11-08 11:05:39 +08:00
parent 23f4f7bc63
commit bfbf1bb2ab
4 changed files with 25 additions and 21 deletions

View File

@@ -1,7 +1,8 @@
from game_server.config.log import Info
from utils.logger import Info
from game_server.net.session import Session
import asyncio
class Gateway:
def __init__(self, server_ip, game_server_port) -> None:
self.server_ip = server_ip
@@ -16,10 +17,9 @@ class Gateway:
async def start_server(self):
session = Session()
server = await asyncio.start_server(session.handle_connection, self.server_ip, self.game_server_port)
server = await asyncio.start_server(
session.handle_connection, self.server_ip, self.game_server_port
)
Info("Gateway listening...")
async with server:
await server.serve_forever()

View File

@@ -1,5 +1,5 @@
import struct
from game_server.protocol.cmd_id import CmdID
from game_server.net.cmd_id import CmdID
class Packet:
def __init__(self, buf: bytes):

View File

@@ -1,5 +1,5 @@
from game_server.config.log import Error, Info
from game_server.protocol.cmd_id import CmdID
from utils.logger import Error, Info
from game_server.net.cmd_id import CmdID
from game_server.net.packet import Packet
from lib import proto as protos
import traceback
@@ -12,6 +12,7 @@ from game_server.game.player import Player
class Session:
player: Player
def __init__(self) -> None:
self.writer = None
self.pending_notifies = []
@@ -33,7 +34,7 @@ class Session:
async def handle_connection(self, reader, writer):
self.writer = writer
addr = writer.get_extra_info('peername')
addr = writer.get_extra_info("peername")
Info(f"Accepted connection from {addr}")
prefix = bytes([0x01, 0x23, 0x45, 0x67])
@@ -110,7 +111,8 @@ class Session:
Error(f"CmdId {packet.cmd_id} not recognized!")
return
request_name = CmdID(packet.cmd_id).name
if request_name == "KeepAliveNotify": return #await self.send(packet.send_packet(protos.KeepAliveNotify()))
if request_name == "KeepAliveNotify":
return # await self.send(packet.send_packet(protos.KeepAliveNotify()))
try:
try:
req: betterproto.Message = getattr(protos, request_name)()
@@ -120,7 +122,9 @@ class Session:
try:
Info(f"RECV packet: {request_name} ({packet.cmd_id})")
handle_module = importlib.import_module(f"game_server.packet.handlers.{request_name}")
handle_module = importlib.import_module(
f"game_server.packet.handlers.{request_name}"
)
handle_function = handle_module.handle
handle_result = await handle_function(self, req)
if not handle_result: