def processFilePacket(self, packet): print packet.payloadSize if self.fileSize is None: self.fileBuf = list() print '========= RECEIVINT FILE ==============' self.fileSize = packet.totalMsgSize self.tester = BandwidthTester() self.fileSize -= packet.payloadSize self.fileBuf.append(packet.payload) self.tester.bandwithCalc(packet.payloadSize) if self.fileSize == 0: self.fileSize = None self.tester = None for buf in self.fileBuf: print buf with open('./video/' + self.fileName, 'a') as f: for buf in self.fileBuf: f.write(buf) self.fileBuf = list() self.fileBuf = None print '========= ALL FILE ACCEPTED =============='
class AppClient(Protocol): def __init__(self): self.buf = '' self.fileBuf = None self.nameList = [] self.fileSize = None self.fileName = '' self.streamSize= None self.streamStart= None self.inputPanel = InputPanel(self, None) self.tester = None def connectionMade(self): self.inputPanel.setCameraPort(self.transport) def processFilePacket(self, packet): print packet.payloadSize if self.fileSize is None: self.fileBuf = list() print '========= RECEIVINT FILE ==============' self.fileSize = packet.totalMsgSize self.tester = BandwidthTester() self.fileSize -= packet.payloadSize self.fileBuf.append(packet.payload) self.tester.bandwithCalc(packet.payloadSize) if self.fileSize == 0: self.fileSize = None self.tester = None for buf in self.fileBuf: print buf with open('./video/' + self.fileName, 'a') as f: for buf in self.fileBuf: f.write(buf) self.fileBuf = list() self.fileBuf = None print '========= ALL FILE ACCEPTED ==============' def processListPacket(self, packet): if self.fileSize is None: self.nameList = list() self.fileBuf = '' print '========= RECEIVINT LIST ==============' self.fileSize = packet.totalMsgSize self.fileSize -= packet.payloadSize self.fileBuf += packet.payload if self.fileSize == 0: self.fileSize = None for name in getFileListFromPayload(self.fileBuf): print name self.nameList.append(name) self.fileBuf = None self.inputPanel.setNameList(self.nameList) print '========= ALL LIST ACCEPTED ==============' def processVideoStreamingPacket(self, packet): now = time.time() if self.streamStart is None: self.streamStart = now self.streamSize = 0 self.streamSize += packet.payloadSize if now - self.streamStart > 1: print '====== Streaming Rate: %.4f MB/s =======' %((self.streamSize)/(now-self.streamStart)/float(1024* 1024)) self.streamSize = 0 self.streamStart = now def processPacket(self, packetList, cameraPort): for packet in packetList: if isinstance(packet, FilePacket): self.processFilePacket(packet) elif isinstance(packet, FileListPacket): self.processListPacket(packet) elif isinstance(packet, VideoStreamingPacket): self.processVideoStreamingPacket(packet) elif isinstance(packet, HelloAckPacket): print '===== ack recevied from server, connected with server ====' elif isinstance(packet, HelloErrPacket): print '===== target camera not online ====' elif isinstance(packet, FileListErrPacket): print '==== %s ====' %(packet.payload) def checkProcess(self): print '=============== receievd %d B ============' %(len(self.buf) ) def dataReceived(self, data): #print '====== received: %s ======' %(data,) self.buf += data #print '=== in buf size: %s ===' %(len(self.buf)) packets, self.buf = getAllPacketFromBuf(self.buf) time.sleep(0.01) if packets: self.processPacket(packets, self.transport) else: print data