def getMachineId(self): WINDOW = xbmcgui.Window(10000) clientId = WINDOW.getProperty("client_id") if clientId != None and clientId != "": return clientId # we need to load and or generate a client machine id __addon__ = self.addon __addondir__ = xbmc.translatePath(__addon__.getAddonInfo('path')) machine_guid_lock_path = os.path.join(__addondir__, "machine_guid.lock") machine_guid_path = os.path.join(__addondir__, "machine_guid") clientId = "" try: lock = Lock(machine_guid_lock_path) locked = lock.acquire() if locked: fd = os.open(machine_guid_path, os.O_CREAT | os.O_RDWR) clientId = os.read(fd, 256) if len(clientId) == 0: uuid = uuid4() clientId = str("%012X" % uuid) self.logMsg("ClientId saved to FILE: %s" % clientId, 2) os.write(fd, clientId) os.fsync(fd) os.close(fd) self.logMsg("ClientId saved to WINDOW: %s" % clientId, 1) WINDOW.setProperty("client_id", clientId) finally: lock.release() return clientId
def getMachineId(self): WINDOW = xbmcgui.Window( 10000 ) clientId = WINDOW.getProperty("client_id") if(clientId != None and clientId != ""): return clientId # we need to load and or generate a client machine id __addon__ = xbmcaddon.Addon(id='plugin.video.xbmb3c') __addondir__ = xbmc.translatePath( __addon__.getAddonInfo('path')) machine_guid_lock_path = os.path.join(__addondir__, "machine_guid.lock") machine_guid_path = os.path.join(__addondir__, "machine_guid") clientId = "" try: lock = Lock(machine_guid_lock_path) locked = lock.acquire() if(locked == True): fd = os.open(machine_guid_path, os.O_CREAT|os.O_RDWR) clientId = os.read(fd, 256) if(len(clientId) == 0): uuid = uuid4() clientId = str("%012X" % uuid) xbmc.log("CLIENT_ID - > Client ID saved to FILE : " + clientId) os.write(fd, clientId) os.fsync(fd) os.close(fd) xbmc.log("CLIENT_ID - > Client ID saved to WINDOW : " + clientId) WINDOW.setProperty("client_id", clientId) finally: lock.release() return clientId
#!/usr/bin/env python3 from Lock import Lock from time import sleep # Usage try: lock = Lock("Worker") lock.acquire() print("fun1 starting") for loop in range(1, 5): print("Fun1 Working {}".format(loop)) sleep(1) print("fun1 finished") finally: print("Releasing Lock") lock.release()
#!/usr/bin/env python3 from Lock import Lock from time import sleep try: lock = Lock("Worker") while not lock.acquire(): print("Fun2 No Lock available") sleep(1) else: print("Got Lock") for loop in range(1, 5): print("Fun2 Working {}".format(loop)) sleep(1) finally: lock.release()