Home | Trees | Indices | Help |
|
---|
|
1 # Copyright (c) 2011 Mathias Kaerlev. 2 # See LICENSE for details. 3 4 from struct import Struct 5 6 from lacewing.baseloader import _BaseLoader, _EmptyLoader 7 from lacewing.bitdict import BitDict 8 from lacewing.packetloaders.common import (_BinaryMessageMixin, 9 _ObjectMessageMixin) 10 from lacewing.packetloaders.common import (CONNECT, SET_NAME, JOIN_CHANNEL, 11 LEAVE_CHANNEL) 12 13 REQUEST_TYPE = Struct('<B') 14 FLAG_DATA = Struct('<B') 15 CHANNEL_DATA = Struct('<H') 16 SUBCHANNEL_DATA = Struct('<B') 17 CHANNEL_MESSAGE_DATA = Struct('<BH') 18 PEER_MESSAGE_DATA = Struct('<BHH') 19 CHANNEL_MASTER_DATA = Struct('<HBH') 20 21 MASTER_KICK, = xrange(1) 22 23 CHANNEL_FLAGS = BitDict( 24 'HideChannel', 25 'AutoClose' 26 ) 2729 request = None 30 version = None 31 name = None 32 flags = None 33 channel = None 34 3767 7639 request, = REQUEST_TYPE.unpack_from(data) 40 data = buffer(data, 1) 41 self.request = request 42 if request == CONNECT: 43 self.version = str(data) 44 elif request == SET_NAME: 45 self.name = str(data) 46 elif request == JOIN_CHANNEL: 47 flags, = FLAG_DATA.unpack_from(data) 48 self.flags.setFlags(flags) 49 self.name = str(buffer(data, FLAG_DATA.size)) 50 elif request == LEAVE_CHANNEL: 51 self.channel, = CHANNEL_DATA.unpack_from(data)5254 request = self.request 55 requestByte = REQUEST_TYPE.pack(request) 56 if request == CONNECT: 57 return requestByte + self.version 58 elif request == SET_NAME: 59 return requestByte + self.name 60 elif request == JOIN_CHANNEL: 61 return (requestByte + FLAG_DATA.pack( 62 self.flags.getFlags()) + self.name) 63 elif request == LEAVE_CHANNEL: 64 return requestByte + CHANNEL_DATA.pack(self.channel) 65 else: 66 return requestByte78 subchannel = None 79 channel = None8781 self.subchannel, self.channel = CHANNEL_MESSAGE_DATA.unpack_from(data) 82 self.readMessage(buffer(data, CHANNEL_MESSAGE_DATA.size))8389 subchannel = None 90 channel = None 91 peer = None100 103 106 109 112 115 118 121 124 13693 (self.subchannel, self.channel, 94 self.peer) = PEER_MESSAGE_DATA.unpack_from(data) 95 self.readMessage(buffer(data, PEER_MESSAGE_DATA.size))9698 return PEER_MESSAGE_DATA.pack(self.subchannel, 99 self.channel, self.peer) + self.generateMessage()
Home | Trees | Indices | Help |
|
---|
Generated by Epydoc 3.0.1 on Thu Dec 22 06:20:00 2011 | http://epydoc.sourceforge.net |