def exe(self): # create & connect __server while self.__run: self.__server = False self.__server = NAOServer(self.host) if not self.__server.isConnected(): self.close() self.__restarted = True # recieve data while self.__server.active() and self.__run: ret = self.__server.read() if ret: data, addr = ret print "recieved data = " + str(data) if len(str(data)) < 1: self.__server.close(True) else: try: # try to interprete as one command data = eval(data) self.__handleData(data, addr) except: # more commands in one string > split data data = data.split("}{") # check for beginng and ending brackets for d in data: if not d.startswith("{"): d = "{" + d if not d.endswith("}"): d += "}" # handle command try: d = eval(str(d)) self.__handleData(d, addr) except: self.__server.close(True) else: print "no data"
class ServerReader(object): """ continously reads socket data """ def __init__(self, host="localhost"): """ Constructor """ self.host = host self.__run = True self.__resetTimer = 0.0 self.__restarted = False self.__server = None def exe(self): # create & connect __server while self.__run: self.__server = False self.__server = NAOServer(self.host) if not self.__server.isConnected(): self.close() self.__restarted = True # recieve data while self.__server.active() and self.__run: ret = self.__server.read() if ret: data, addr = ret print "recieved data = " + str(data) if len(str(data)) < 1: self.__server.close(True) else: try: # try to interprete as one command data = eval(data) self.__handleData(data, addr) except: # more commands in one string > split data data = data.split("}{") # check for beginng and ending brackets for d in data: if not d.startswith("{"): d = "{" + d if not d.endswith("}"): d += "}" # handle command try: d = eval(str(d)) self.__handleData(d, addr) except: self.__server.close(True) else: print "no data" def __handleData(self, data, addr): """ Handles recieved data """ # check for connect if data: if "command" in data and "commandArguments" in data: disconnect = False # handle build in commands if data["command"] == dataCommands.SYS_DISCONNECT: data = self.__server.createDataResponsePackage(data, True) self.__server.send(data) disconnect = True elif data["command"] == dataCommands.SYS_GET_INFO: data = self.__server.createDataResponsePackage(data, True) disconnect = not self.__server.send(data) elif data["command"] == dataCommands.SYS_SET_REQUIRED_DATA: self.__server.setRequiredData(data["commandArguments"]) data = self.__server.createDataResponsePackage(data, True) disconnect = not self.__server.send(data) # handle user else: ret = NAOCommand.resolveCmd(data, self.__server) data = self.__server.createDataResponsePackage(data, ret) disconnect = not self.__server.send(data) # handle protocol error else: data = self.__server.createDataResponsePackage(data, False) disconnect = not self.__server.send(data) # check if command was successfully executed if disconnect: self.__server.close(True) """ Closes __server reader """ def close(self): self.__run = False self.__server.close() print "closed __server on", self.host
class ServerReader(object): ''' continously reads socket data ''' def __init__(self, host="localhost"): ''' Constructor ''' self.host = host self.__run = True self.__resetTimer = 0.0 self.__restarted = False self.__server = None def exe(self): # create & connect __server while self.__run: self.__server = False self.__server = NAOServer(self.host) if not self.__server.isConnected(): self.close() self.__restarted = True # recieve data while self.__server.active() and self.__run: ret = self.__server.read() if ret: data, addr = ret print "recieved data = " + str(data) if len(str(data)) < 1: self.__server.close(True) else: try: # try to interprete as one command data = eval(data) self.__handleData(data, addr) except: # more commands in one string > split data data = data.split("}{") # check for beginng and ending brackets for d in data: if not d.startswith("{"): d = "{" + d if not d.endswith("}"): d += "}" # handle command try: d = eval(str(d)) self.__handleData(d, addr) except: self.__server.close(True) else: print "no data" def __handleData(self, data, addr): ''' Handles recieved data ''' # check for connect if data: if 'command' in data and 'commandArguments' in data: disconnect = False # handle build in commands if data['command'] == dataCommands.SYS_DISCONNECT: data = self.__server.createDataResponsePackage(data, True) self.__server.send(data) disconnect = True elif data['command'] == dataCommands.SYS_GET_INFO: data = self.__server.createDataResponsePackage(data, True) disconnect = not self.__server.send(data) elif data['command'] == dataCommands.SYS_SET_REQUIRED_DATA: self.__server.setRequiredData(data['commandArguments']) data = self.__server.createDataResponsePackage(data, True) disconnect = not self.__server.send(data) # handle user else: ret = NAOCommand.resolveCmd(data, self.__server) data = self.__server.createDataResponsePackage(data, ret) disconnect = not self.__server.send(data) # handle protocol error else: data = self.__server.createDataResponsePackage(data, False) disconnect = not self.__server.send(data) # check if command was successfully executed if disconnect: self.__server.close(True) ''' Closes __server reader ''' def close(self): self.__run = False self.__server.close() print "closed __server on", self.host