Package lacewing :: Package moo :: Package packetloaders :: Module client
[frames] | no frames]

Source Code for Module lacewing.moo.packetloaders.client

  1  from struct import unpack_from, pack 
  2   
  3  from lacewing.moo.packetloaders.common import (unpack_string, _MooLoader,  
  4      _ChannelMixin, _ConnectionMixin) 
  5   
  6  from lacewing.moo.packetloaders.message import Message 
  7   
8 -class SetName(_MooLoader, _ConnectionMixin):
9 majorVersion = 3 # don't want our user to 10 minorVersion = 0 # fill these in 11 playerName = None 12
13 - def _load(self, data):
14 (self.majorVersion, 15 self.minorVersion, 16 nameSize) = unpack_from('<BBI', data) 17 self.playerName = unpack_string(data, nameSize, 6) 18 return 6 + nameSize
19
20 - def generate(self):
21 return pack('<BBI', self.majorVersion, self.minorVersion, 22 len(self.playerName)) + self.playerName
23
24 -class ClientMessage(_MooLoader):
25 subchannel = None 26 message = None 27
28 - def _load(self, data):
29 (self.subchannel, 30 messageSize) = unpack_from('<HI', data) 31 32 message = Message(**self.settings) 33 message.load(str(buffer(data, 6, messageSize))) 34 self.message = message 35 36 return 6 + messageSize
37
38 - def generate(self):
39 messageData = self.message.generate() 40 41 return pack('<HI', self.subchannel, len(messageData)) + messageData
42
43 -class JoinChannel(_MooLoader):
44 channelName = None 45
46 - def _load(self, data):
47 channelSize, = unpack_from('<I', data) 48 self.channelName = unpack_string(data, channelSize, 4) 49 50 return 4 + channelSize
51
52 - def generate(self):
53 return pack('<I', len(self.channelName)) + self.channelName
54
55 -class LeaveChannel(_MooLoader, _ChannelMixin):
56 channelId = None 57
58 - def _load(self, data):
59 self.channelId, = unpack_from('<I', data) 60 return 4
61
62 - def generate(self):
63 return pack('<I', self.channelId)
64
65 -class ChangeName(_MooLoader):
66 newName = None 67
68 - def _load(self, data):
69 nameSize, = unpack_from('<I', data) 70 self.newName = unpack_string(data, nameSize, 4) 71 return 4 + nameSize
72
73 - def generate(self):
74 return pack('<I', len(self.newName)) + self.newName
75
76 -class ToChannelMessage(_MooLoader, _ChannelMixin):
77 subchannel = None 78 message = None 79 channelId = None 80
81 - def _load(self, data):
82 (self.subchannel, 83 self.channelId, 84 messageSize) = unpack_from('<HII', data) 85 86 message = Message(**self.settings) 87 message.load(str(buffer(data, 10, messageSize))) 88 self.message = message 89 90 return 10 + messageSize
91
92 - def generate(self):
93 messageData = self.message.generate() 94 95 return pack('<HII', self.subchannel, self.channelId, len(messageData)) + messageData
96
97 -class PrivateMessage(_MooLoader, _ChannelMixin, _ConnectionMixin):
98 subchannel = None 99 message = None 100 channelId = None 101 playerId = None 102
103 - def _load(self, data):
104 (self.subchannel, 105 self.channelId, 106 self.playerId, 107 messageSize) = unpack_from('<HIII', data) 108 109 message = Message(**self.settings) 110 message.load(str(buffer(data, 14, messageSize))) 111 self.message = message 112 113 return 14 + messageSize
114
115 - def generate(self):
116 messageData = self.message.generate() 117 118 return pack('<HIII', self.subchannel, self.channelId, 119 self.playerId, len(messageData)) + messageData
120 121 __all__ = ['SetName', 'ClientMessage', 'JoinChannel', 'LeaveChannel', 122 'ChangeName', 'ToChannelMessage', 'PrivateMessage'] 123