def web_socket_transfer_data(request): logger.logInfo(NAME+ "Server dostal zgloszenie") paramsDictionary = {} paramsDictionary["SOCKET"] = request.ws_stream paramsDictionary["HOME_PATH"] = request.get_options()["PROJECT_LOCATION"] paramsDictionary["CLIENT_ADDRESS"] = request.connection.remote_ip stopQueue = Queue() listenThread = KillableListenThread(request.ws_stream, stopQueue) ticket = request.ws_stream.receive_message() currentTicket = TicketUtil.readTempVars()[EXPECTED_TICKET] timeOut = (int(ticket) - int(currentTicket)) * 5 start = time.time() while currentTicket < ticket and time.time() - start < timeOut: time.sleep(1) currentTicket = TicketUtil.readTempVars()[EXPECTED_TICKET] if currentTicket == ticket: request.ws_stream.send_message(OK) listenThread.start() if listenThread.getMessage(5) != OK: skip(paramsDictionary, ticket) else: request.ws_stream.send_message(ABORT) skip(paramsDictionary, ticket) stopQueue.put("STOP") return apache.HTTP_OK
def globalAbort(paramsDictionary, db, lock): try: socket = paramsDictionary["SOCKET"] logger.logImportant(NAME + "Orzymano polecenie GLOBAL_ABORT") db.executeQueryWithoutTransaction(ROLLBACK) ticket = socket.receive_message() TicketUtil.skipTicket(ticket) socket.send_message(OK) if lock.is_locked: lock.release() except Exception, e: logger.logError(NAME + e.message) if lock.is_locked: lock.release()
def globalCommit(paramsDictionary, db, lock): try: socket = paramsDictionary["SOCKET"] servers = socket.receive_message() logger.logInfo(NAME + "Mam serwery " + servers) servers = servers.split(":") servers.append(paramsDictionary["CLIENT_ADDRESS"]) logger.logImportant(NAME + "Uczestnik zaakceptowal operacje") db.executeQueryWithoutTransaction(generateInsertToDataVersions(paramsDictionary)) db.executeQueryWithoutTransaction(COMMIT) insertNewDataVersions(servers, paramsDictionary) ticket = socket.receive_message() TicketUtil.setNextExpectedTicket(ticket) socket.send_message(OK) if lock.is_locked: lock.release() except Exception, e: logger.logError(NAME + e.message) if lock.is_locked: lock.release()
except Exception, e: logger.logError(NAME + e.message) socket.send_message(LOCK_ERROR) return apache.HTTP_OK try: db = MySQLdb.connect(dbParamsDict["HOST"], login, password, dbParamsDict["DATABASE"]) cursor = db.cursor() logger.logInfo(NAME + "polaczenie z baza nawiazane") cursor.execute("select * from versions where id > " + str(clientVersion) + " order by id") logger.logInfo(NAME + "komenda wyslana do bazy") for version, command in cursor.fetchall(): socket.send_message(str(version)) socket.send_message(command) logger.logInfo(NAME + "Wyslano " + str(version) + " " + command) socket.send_message(END) ticket = TicketUtil.getCurrentExpectedTicket() socket.send_message(str(ticket)) logger.logInfo(NAME + "wyslano wiadomosc konczaca") return apache.HTTP_OK except MySQLdb.Error, e: logger.logError("%d %s" % (e.args[0], e.args[1])) if lock.is_locked: lock.release() return apache.HTTP_OK except Exception, ee: logger.logError(NAME + ee.message) if lock.is_locked: lock.release() return apache.HTTP_OK
# TICKET_PARAM = "ticketServer" # #logger.logImportant("nowy log") # tempProcessor = FileProcessor("/home/dur/Projects/ServerSide/config/tempParams.conf") # tempProcessor.lockFile() # params = tempProcessor.readFile() # tempProcessor.unlockFile() #import utils.Logger as logger # tempProcessor = FileProcessor("/home/dur/Projects/ServerSide/config/tempParams.conf") # tempProcessor.lockFile() # params = tempProcessor.readFile() # print(params) # tempProcessor.unlockFile() #logger.logError("Error message") from database.utils1 import TicketUtil TicketUtil.setNextExpectedTicket(1)
cursor.execute(command) command = command.replace('\'', '\\\'') logger.logInfo(NAME + "Komenda po transformacji " + command) insert = "INSERT INTO " + dbParamsDict["versionsTableName"] + " VALUES(" + str(version) + ",\'" + command + "\')" logger.logInfo(NAME + "Wykonuje: " + insert) cursor.execute(insert) logger.logInfo(NAME + "wykonano inserta") currentVersion = version version = connection.get_message() logger.logInfo(NAME + "zamykanie polaczenia z baza danych") cursor.execute("commit") ticket = connection.get_message() ticket = int(ticket) - 1 TicketUtil.setNextExpectedTicket(ticket) except MySQLdb.Error, e: logger.logError("%d %s" % (e.args[0], e.args[1])) cursor.execute("rollback") except Exception, ee: logger.logError(ee.message) cursor.execute("rollback") if lock.is_locked: lock.release() versionsFile.lockFile() dataVersions = versionsFile.readFile() dataVersions[LOCALHOST_NAME] = currentVersion versionsFile.writeToFile(dataVersions) versionsFile.unlockFile() logger.logImportant(NAME + "Dane sa spojne")