Package lacewing :: Package moo :: Module packet
[frames] | no frames]

Source Code for Module lacewing.moo.packet

 1  import struct 
 2  from struct import unpack_from, pack 
 3   
 4  from lacewing.moo.packetloaders.server import * 
 5  from lacewing.moo.packetloaders.client import * 
 6   
 7  from lacewing.moo.packetloaders.common import OutOfData 
 8   
 9  csTypes = { 
10      1 : ToChannelMessage, 
11      2 : ClientMessage, 
12      3 : PrivateMessage, 
13      4 : JoinChannel, 
14      5 : LeaveChannel, 
15      11 : ChangeName, 
16      12 : SetName, 
17   
18  } 
19   
20  scTypes = { 
21      1 : FromChannelMessage, 
22      5 : PlayerLeft, 
23      6 : PlayerJoined, 
24      7 : PlayerExists, 
25      8 : ChannelJoined, 
26      10 : MOTD, 
27      11 : PlayerChanged, 
28      12 : AssignedID, 
29  } 
30   
31 -class _Packet(object):
32 loader = None 33
34 - def __init__(self, **settings):
35 self.settings = settings
36
37 - def load(self, data):
38 try: 39 packetId, = unpack_from('<B', data) 40 except struct.error: 41 raise OutOfData 42 loader = self._loaderDict[packetId](**self.settings) 43 self.loader = loader 44 return loader.load(data[1:]) + 1
45
46 - def generate(self):
47 packetId = [k for (k, v) in self._loaderDict.iteritems() 48 if isinstance(self.loader, v)][0] 49 return pack('<B', packetId) + self.loader.generate()
50
51 -class ServerPacket(_Packet):
52 _loaderDict = scTypes
53
54 -class ClientPacket(_Packet):
55 _loaderDict = csTypes
56