class ClientThread(threading.Thread): def __init__(self,ip,port,sock,mmObject,rloc): threading.Thread.__init__(self) self.ip = ip self.port = port self.socket = sock self.f = open("log"+str(random.getrandbits(16))+".log","w") self.log("Thread created.","General") self.state = States.general self.rollinghash = "none" self.packetProcessor = PacketProcess(mmObject,rloc) self.authenticated = False self.lastconnection = int(round(time.time() * 1000)) self.mmObj = mmObject def run(self): self.log("Thread running.","General") runningThread = True while runningThread: #Wait for input try: data = self.receive() except socket.error, e: print e break self.lastconnection = self.getTimeMS() if(data is not None or len(data) > 0): #split data #Possible multiple packets numberOfPackets = len(str(data).split(">")) - 1 #Get them to list self.packetsReceived = [] for i in range(0,numberOfPackets): self.packetsReceived.append(str(data).split(">")[i].strip()) for stop in self.packetsReceived: if stop is None or stop == "": continue self.log(stop,"Received") #Process input state = processorStates((str(stop).split(":")[0]).strip()) command = processorCommands((str(stop).split(":")[1]).strip()) arg = str(str(stop).split(":")[2]).strip() response = self.packetProcessor.processPacket(state,command,arg) if response is not None: #Identify all packets response = response + ">" #return self.packetProcessor.processPacket(command,arg) self.log(response,"Pushed") if(self.packetProcessor.disconnect): runningThread = False else: self.send(response) #Close connection self.log("Disconnecting","General") self.f.close()