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

Source Code for Module lacewing.moo.protocol

 1  # Copyright (c) 2011 Mathias Kaerlev. 
 2  # See LICENSE for details. 
 3   
 4  from twisted.internet import protocol 
 5   
 6  from lacewing.moo.packetloaders.common import OutOfData 
 7   
 8  from lacewing.multidict import MultikeyDict 
 9   
10 -class MooProtocol(protocol.Protocol):
11 name = None 12 id = None 13 14 isAccepted = False 15 16 channels = None 17 _packetBuffer = '' 18
19 - def __init__(self):
20 self.channels = MultikeyDict()
21
22 - def sendLoader(self, loader):
23 newPacket = self._sendPacket(**self.settings) 24 newPacket.loader = loader 25 self.transport.write(newPacket.generate())
26
27 - def dataReceived(self, data):
28 packetBuffer = ''.join([self._packetBuffer, data]) 29 newPacket = self._receivePacket(**self.settings) 30 try: 31 while 1: 32 bytesRead = newPacket.load(packetBuffer) 33 self.loaderReceived(newPacket.loader) 34 packetBuffer = packetBuffer[bytesRead:] 35 if len(packetBuffer) == 0: 36 break 37 except OutOfData: 38 pass 39 self._packetBuffer = packetBuffer
40
41 - def loaderReceived(self, loader):
42 """ 43 Called upon receiving a packet from the 44 other end. 45 """ 46 raise NotImplementedError
47