Files
WLUS/WorldServer.py
wesleyd1124 dd553f127c Rewritting
Upgraded to Python 3.6 and restarting development with a better server architecture
2018-05-23 18:56:57 -04:00

25 lines
1.2 KiB
Python

from typing import Callable
import WorldPackets
from PacketHeaders import PacketHeader
import threading
from ServerUtilities import *
class WorldServer(GameServer):
def __init__(self, address: Address, max_connections: int, incoming_password: bytes, GameManager : GameManager):
super().__init__(address, max_connections, incoming_password, GameManager)
self.add_handler(Server.Event.UserPacket, self.handlePacket)
self.WorldHandlers = {}
self.registerWorldHandler(PacketHeader.ClientUserSessionInfo.value, WorldPackets.HandleSessionKey)
self.registerWorldHandler(PacketHeader.ClientMinifigureListRequest.value, WorldPackets.HandleMinifigListRequest)
self.registerWorldHandler(PacketHeader.Handshake.value, WorldPackets.HandleHandshake)
print("World Server Started")
def handlePacket(self, data : bytes, address):
if(data[0:8] in self.WorldHandlers):
t = threading.Thread(target=self.WorldHandlers[data[0:8]], args=[self, data[8:], address])
t.start()
else:
print("Header {} Has No Handler!".format(data[0:8]))
def registerWorldHandler(self, header : PacketHeader, function : Callable):
self.WorldHandlers[header] = function