Home | Trees | Indices | Help |
|
---|
|
1 from struct import Struct 2 3 from lacewing.baseloader import _BaseLoader, _EmptyLoader 4 from lacewing.bitdict import BitDict 5 from lacewing.packetloaders.common import (_BinaryMessageMixin, 6 _ObjectMessageMixin) 7 from lacewing.packetloaders.common import (CONNECT, SET_NAME, JOIN_CHANNEL, 8 LEAVE_CHANNEL) 9 10 REQUEST_TYPE = Struct('<B') 11 FLAG_DATA = Struct('<B') 12 CHANNEL_DATA = Struct('<H') 13 SUBCHANNEL_DATA = Struct('<B') 14 CHANNEL_MESSAGE_DATA = Struct('<BH') 15 PEER_MESSAGE_DATA = Struct('<BHH') 16 CHANNEL_MASTER_DATA = Struct('<HBH') 17 18 MASTER_KICK, = xrange(1) 19 20 CHANNEL_FLAGS = BitDict( 21 'HideChannel', 22 'AutoClose' 23 ) 2426 request = None 27 version = None 28 name = None 29 flags = None 30 channel = None 31 3464 7336 request, = REQUEST_TYPE.unpack_from(data) 37 data = buffer(data, 1) 38 self.request = request 39 if request == CONNECT: 40 self.version = str(data) 41 elif request == SET_NAME: 42 self.name = str(data) 43 elif request == JOIN_CHANNEL: 44 flags, = FLAG_DATA.unpack_from(data) 45 self.flags.setFlags(flags) 46 self.name = str(buffer(data, FLAG_DATA.size)) 47 elif request == LEAVE_CHANNEL: 48 self.channel, = CHANNEL_DATA.unpack_from(data)4951 request = self.request 52 requestByte = REQUEST_TYPE.pack(request) 53 if request == CONNECT: 54 return requestByte + self.version 55 elif request == SET_NAME: 56 return requestByte + self.name 57 elif request == JOIN_CHANNEL: 58 return (requestByte + FLAG_DATA.pack( 59 self.flags.getFlags()) + self.name) 60 elif request == LEAVE_CHANNEL: 61 return requestByte + CHANNEL_DATA.pack(self.channel) 62 else: 63 return requestByte75 subchannel = None 76 channel = None8478 self.subchannel, self.channel = CHANNEL_MESSAGE_DATA.unpack_from(data) 79 self.readMessage(buffer(data, CHANNEL_MESSAGE_DATA.size))8086 subchannel = None 87 channel = None 88 peer = None97 100 103 106 109 112 115 118 121 13390 (self.subchannel, self.channel, 91 self.peer) = PEER_MESSAGE_DATA.unpack_from(data) 92 self.readMessage(buffer(data, PEER_MESSAGE_DATA.size))9395 return PEER_MESSAGE_DATA.pack(self.subchannel, 96 self.channel, self.peer) + self.generateMessage()
Home | Trees | Indices | Help |
|
---|
Generated by Epydoc 3.0.1 on Sat Apr 23 02:18:52 2011 | http://epydoc.sourceforge.net |