コード例 #1
0
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
コード例 #2
0
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()
コード例 #3
0
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()
コード例 #4
0
ファイル: makeCoherent_wsh.py プロジェクト: Dur/Inzynierka
	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

コード例 #5
0
ファイル: test2.py プロジェクト: Dur/Inzynierka
# 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)


コード例 #6
0
ファイル: MakeCoherent.py プロジェクト: Dur/Inzynierka
			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")