mirror of
https://github.com/Wesley-DeMontigny/WLUS.git
synced 2026-02-09 03:28:37 -06:00
25 lines
1.2 KiB
Python
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
|