def parse_packets(self): print "parsing packets of %s" % self.name packets,leftovers = parse_packets(self.data) self.data = leftovers print "leftovers:", leftovers for packet in packets: self.handle_packets(packet[0],packet[1])
def buffer_recv(self): newdata = self.socket.recv(16 * 1024) if newdata == '': self.on_close() return [] self.buffer += newdata data, self.buffer = packets.parse_packets(self.buffer) return data
def parse_stream(self, bytestream): if self.encryption_on: bytestream = self.decipher.decrypt(bytestream) parsed_packets, self.leftover = parse_packets(self.leftover + bytestream) if config.DEBUG: packet_printout("SERVER", parsed_packets, self.encryption_on, self.leftover) self.packets.extend(parsed_packets) self.packet_iter(self.packets)
def dataReceived(self, data): print (" We got a packet. ") # DEBUGGING, it appeared stalled. self.buffer += data if ("data_received") not in self.stats: self.stats['data_received'] = 0 self.stats['data_received'] += len(data) packets, self.buffer = parse_packets(self.buffer) for header, payload in packets: if ("packets_received") not in self.stats: self.stats['packets_received'] = 0 self.stats['packets_received'] += 1 if header in self.handlers: self.handlers[header](payload) else: print "Didn't handle parseable packet %d!"%header print payload
def loop_iter(self): if self.last_sent_packet < (time.time() - 60): self.send_packet('ping') self.timers.run_timers() if not select.select([self.socket], [], [], 0.1)[0]: return newdata = self.socket.recv(16 * 1024) self.buffer += newdata data, self.buffer = packets.parse_packets(self.buffer) if not data and len(self.buffer) > 5: if len(self.buffer) > 20 * 1024: print repr(self.buffer) exit() for header, payload in data: self.packlog.debug('recv', header, payload) name = packets.packets[header].name yield (name, header, payload)