def __getitem__(self, item): param = None try: param = self.params[item] except Exception as e: Log.w(getExceptionInfo(e)) return param
def read(self): try: message = self.socket.recv(4096) except Exception as e: Log.e(getExceptionInfo(e)) return Client.ReadError if len(message) == 0: return Client.NoMessage self.buf += message while len(self.buf) > 4: length = int(self.buf[0:4]) if not len(self.buf) >= length + 4: break msg = self.buf[4:length + 4] self.buf = self.buf[length + 4:] message = Message() if not message.loads(msg): Log.w(u'Unknown Message') else: self.requests.put(message) return Client.NewMessage
def update(self, table, name, value, **kwargs): model = QSqlTableModel(self, self.db) model.setTable(table) modelFilter = '' for key in kwargs: if len(modelFilter) != 0: modelFilter += 'and' if isinstance(kwargs[key], str) or isinstance(kwargs[key], unicode): newFilter = key + "={value}".format(value="'" + kwargs[key] + "'") else: newFilter = key + "={value}".format(value=kwargs[key]) modelFilter += newFilter model.setFilter(modelFilter) model.select() if model.rowCount() == 1: record = model.record(0) record.setValue(name, value) model.setRecord(0, record) if not model.submitAll(): Log.e('更新记录失败') return False return True elif model.rowCount() == 0: Log.w('没找到相关记录, 添加新记录') self.addRecord(table, **{name: value}) else: Log.e('更新失败') return False
def read(self): try: message = self.socket.recv(4096) except Exception as e: Log.e(getExceptionInfo(e)) return Client.ReadError if len(message) == 0: return Client.NoMessage self.buf += message while len(self.buf) > 4: length = int(self.buf[0:4]) if not len(self.buf) >= length + 4: break msg = self.buf[4: length + 4] self.buf = self.buf[length + 4:] message = Message() if not message.loads(msg): Log.w(u'Unknown Message') else: self.requests.put(message) return Client.NewMessage
def handleSaveClicked(self): readable = self.readableEdit.text() username = self.nameEdit.text() password = self.passwordEdit.text() if len(username) > 0 and len(password) > 0: resourceId = uuid.uuid4().hex account = { 'id': resourceId, 'desc': readable, 'username': username, 'password': password } self.wantSaveAccount.emit(account) clientId = application.getRandomClientId() message = Message(cmd=Message.CMD_ADD_ACCOUNT) message['account'] = account if clientId: EventManager.trigger( Event('Client.replyReady.' + clientId, message)) application.addResource(resourceId, clientId) toolBarId = application.lookUpToolBarIdByResourceId(resourceId) if toolBarId: EventManager.trigger( Event('ToolBar.changeState.' + toolBarId, True)) else: Log.e(u'未找到对应的服务器,增加失败') else: Log.w(u'用户名和密码均不为空时才能保存')
def dispatchRequest(self, request): cmd = request.getCMD() if cmd in self.callbacks: self.callbacks[cmd](request) elif Message.CMD_BRIDGE_START <= cmd < Message.CMD_WEBCHAT_END: try: webchatId = request.getParam('webchatId') EventManager.trigger(Event('Socket.addReply.' + webchatId, request)) except Exception as e: Log.e(getExceptionInfo(e)) else: Log.w('未实现的命令: ' + str(cmd))
def dispatchRequest(self, request): cmd = request.getCMD() if cmd in self.callbacks: self.callbacks[cmd](request) elif Message.CMD_BRIDGE_START <= cmd < Message.CMD_WEBCHAT_END: try: webchatId = request.getParam('webchatId') EventManager.trigger( Event('Socket.addReply.' + webchatId, request)) except Exception as e: Log.e(getExceptionInfo(e)) else: Log.w('未实现的命令: ' + str(cmd))
def dispatchRequest(self, client): Log.i('Default dispatcher: ' + str(client)) Log.w('You need to setDispatcher for the Server') request = client.getRequest() cmd = request.getCMD() if cmd == Message.CMD_CLIENT_VALIDATED: client.setClientId(request['clientId']) message = Message(cmd=Message.CMD_QUERY_GPS, id=1) EventManager.trigger(Event('Client.replyReady.' + client.clientId, message)) message = Message(cmd=Message.CMD_QUERY_GPS, id=2) EventManager.trigger(Event('Client.replyReady.' + client.clientId, message)) message = Message(cmd=Message.CMD_QUERY_GPS, id=3) EventManager.trigger(Event('Client.replyReady.' + client.clientId, message)) message = Message(cmd=Message.CMD_QUERY_GPS, id=4) EventManager.trigger(Event('Client.replyReady.' + client.clientId, message))
def connectToServer(self, address): """address格式为(url, port)""" if self.hasConnected(address): Log.w('已经连接到服务器') return clientSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) clientSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) try: clientSocket.connect(address) client = Client(clientSocket, -1) self.clients[client] = (address, -1) Log.i('成功连接到服务器') return True except Exception as e: Log.e(getExceptionInfo(e))
def dispatchRequest(self, client): request = client.getRequest() cmd = request.getCMD() if cmd == Message.CMD_CLIENT_VALIDATED: client.setClientId(request['clientId']) if cmd in self.callbacks: request.setParam(clientId=client.clientId) funcs = self.callbacks[cmd] if isinstance(funcs, list): for index, func in enumerate(funcs): if index == len(funcs) - 1: return func(request) else: func(request) else: return self.callbacks[cmd](request) else: Log.w('未实现的命令: ' + str(cmd))
def createTable(self, table, fields): if not hasattr(self, 'db'): Log.e('数据库未连接') return False if self.isTableExist(table): Log.w(table + ' 已存在') return query = QSqlQuery(self.db) sql = 'CREATE TABLE ' + table + '(id INTEGER PRIMARY KEY' for field in fields: if fields[field] not in Database.TYPES: raise TypeError else: sql += ', ' + field + ' ' + fields[field] sql += ')' if not query.exec_(sql): Log.e('数据库' + table + '创建失败') return False
def handleSaveClicked(self): readable = self.readableEdit.text() username = self.nameEdit.text() password = self.passwordEdit.text() if len(username) > 0 and len(password) > 0: resourceId = uuid.uuid4().hex account = {'id': resourceId, 'desc': readable, 'username': username, 'password': password} self.wantSaveAccount.emit(account) clientId = application.getRandomClientId() message = Message(cmd=Message.CMD_ADD_ACCOUNT) message['account'] = account if clientId: EventManager.trigger(Event('Client.replyReady.' + clientId, message)) application.addResource(resourceId, clientId) toolBarId = application.lookUpToolBarIdByResourceId(resourceId) if toolBarId: EventManager.trigger(Event('ToolBar.changeState.' + toolBarId, True)) else: Log.e(u'未找到对应的服务器,增加失败') else: Log.w(u'用户名和密码均不为空时才能保存')
def handleSaveClicked(self): readable = self.readableEdit.text() lng = self.lngEdit.text() lat = self.latEdit.text() if len(lng) > 0 and len(lat) > 0: resourceId = uuid.uuid4().hex gps = {'id': resourceId, 'desc': readable, 'lng': lng, 'lat': lat} self.wantSaveLocation.emit(gps) clientId = application.getRandomClientId() message = Message(cmd=Message.CMD_ADD_GPS) message['gps'] = gps if clientId: EventManager.trigger(Event('Client.replyReady.' + clientId, message)) application.addResource(resourceId, clientId) toolBarId = application.lookUpToolBarIdByResourceId(resourceId) if toolBarId: EventManager.trigger(Event('ToolBar.changeState.' + toolBarId, True)) else: Log.e(u'未找到对应的服务器,增加失败') else: Log.w(u'经度和纬度均不为空时才能保存')
def handleSaveClicked(self): readable = self.readableEdit.text() lng = self.lngEdit.text() lat = self.latEdit.text() if len(lng) > 0 and len(lat) > 0: resourceId = uuid.uuid4().hex gps = {'id': resourceId, 'desc': readable, 'lng': lng, 'lat': lat} self.wantSaveLocation.emit(gps) clientId = application.getRandomClientId() message = Message(cmd=Message.CMD_ADD_GPS) message['gps'] = gps if clientId: EventManager.trigger( Event('Client.replyReady.' + clientId, message)) application.addResource(resourceId, clientId) toolBarId = application.lookUpToolBarIdByResourceId(resourceId) if toolBarId: EventManager.trigger( Event('ToolBar.changeState.' + toolBarId, True)) else: Log.e(u'未找到对应的服务器,增加失败') else: Log.w(u'经度和纬度均不为空时才能保存')
def removeParam(self, *args): for name in args: if name in self.params: del self.params[name] else: Log.w('试图删除不存在的参数: ' + name)
def __setitem__(self, key, value): if key in self.params: Log.w('覆盖已有参数: ' + key) self.params[key] = value
def setParam(self, **kwargs): for name in kwargs: if name in self.params: Log.w('覆盖已有参数: ' + name) self.params[name] = kwargs[name]
def dispatchRequest(self, client): request = client.getRequest() Log.i('Default dispatcher: ' + str(request)) Log.w('You need to setDispatcher for the Server')
def handleVmStartFail(self, request): EventManager.trigger(Event('Message.vmStartFail', request)) Log.w(u'虚拟机启动失败')
def dispatchRequest(self, request): Log.i('Default dispatcher: ' + str(request)) Log.w('You need to setDispatcher for the Server')