#------------- server.py --------------- class Manager: def __init__(self): self.onClientAdd = Event() self.onClientRemove = Event() self.onClientPing = Event() self.protocol = { "clientAdd" : self.onClientAdd, "clientRemove" : self.onClientRemove, "clientPing" : self.onClientPing } def ReadPacket(self, data): self.protocol.get(data["type"])(data) # Route packets to it's specified function in the protocol dictionary. #------------------------------------------------------------------- import server # This should be called when a "clientAdd" packet has been recieved def AddingClient(data): print "adding client %s" % data["id"] # This should be called when a "clientRemove" packet has been recieved def RemovingClient(data): print "removing client %s" % data["id"] # This should be called when a "clientPing" packet has been recieved def PingingClient(data): print "pining client %s" % data["id"] serverMan = server.Manager() serverMan.onClientAdd += AddingClient serverMan.onClientRemove += RemovingClient serverMan.onClientPing += PingingClient # Send a test packet to the server, where id is "1337" and packet type is "clientAdd". serverMan.ReadPacket({"id":1337,"type":"clientAdd"}) #-------------------------- OUTPUT -------------------- adding client 1137