Пример #1
0
 def __getitem__(self, item):
     param = None
     try:
         param = self.params[item]
     except Exception as e:
         Log.w(getExceptionInfo(e))
     return param
Пример #2
0
    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
Пример #3
0
 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
Пример #4
0
    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
Пример #5
0
 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'用户名和密码均不为空时才能保存')
Пример #6
0
 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))
Пример #7
0
 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))
Пример #8
0
 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))
Пример #9
0
 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))
Пример #10
0
 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))
Пример #11
0
 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))
Пример #12
0
 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))
Пример #13
0
    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
Пример #14
0
 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'用户名和密码均不为空时才能保存')
Пример #15
0
 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'经度和纬度均不为空时才能保存')
Пример #16
0
 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'经度和纬度均不为空时才能保存')
Пример #17
0
 def removeParam(self, *args):
     for name in args:
         if name in self.params:
             del self.params[name]
         else:
             Log.w('试图删除不存在的参数: ' + name)
Пример #18
0
 def __setitem__(self, key, value):
     if key in self.params:
         Log.w('覆盖已有参数: ' + key)
     self.params[key] = value
Пример #19
0
 def setParam(self, **kwargs):
     for name in kwargs:
         if name in self.params:
             Log.w('覆盖已有参数: ' + name)
         self.params[name] = kwargs[name]
Пример #20
0
 def removeParam(self, *args):
     for name in args:
         if name in self.params:
             del self.params[name]
         else:
             Log.w('试图删除不存在的参数: ' + name)
Пример #21
0
 def __setitem__(self, key, value):
     if key in self.params:
         Log.w('覆盖已有参数: ' + key)
     self.params[key] = value
Пример #22
0
 def dispatchRequest(self, client):
     request = client.getRequest()
     Log.i('Default dispatcher: ' + str(request))
     Log.w('You need to setDispatcher for the Server')
Пример #23
0
 def setParam(self, **kwargs):
     for name in kwargs:
         if name in self.params:
             Log.w('覆盖已有参数: ' + name)
         self.params[name] = kwargs[name]
Пример #24
0
 def handleVmStartFail(self, request):
     EventManager.trigger(Event('Message.vmStartFail', request))
     Log.w(u'虚拟机启动失败')
Пример #25
0
 def dispatchRequest(self, request):
     Log.i('Default dispatcher: ' + str(request))
     Log.w('You need to setDispatcher for the Server')
Пример #26
0
 def handleVmStartFail(self, request):
     EventManager.trigger(Event('Message.vmStartFail', request))
     Log.w(u'虚拟机启动失败')