Author: remi
Date: 2009-03-27 16:28:02 +0100 (Fri, 27 Mar 2009)
New Revision: 4224
Modified:
software_suite_v2/tuxware/tuxdroidserver/trunk/util/applicationserver/gadget/GadgetsContainer.py
software_suite_v2/tuxware/tuxdroidserver/trunk/util/attitunes/AttitunesContainer.py
software_suite_v2/tuxware/tuxdroidserver/trunk/util/filesystem/AutoDeployer.py
Log:
* fixed a bug with a method called without "()"
* improved the safe-thread access of the "isDeployed" value
* improved "directory deployed" events strategy
Modified:
software_suite_v2/tuxware/tuxdroidserver/trunk/util/applicationserver/gadget/GadgetsContainer.py
===================================================================
---
software_suite_v2/tuxware/tuxdroidserver/trunk/util/applicationserver/gadget/GadgetsContainer.py
2009-03-27 14:10:05 UTC (rev 4223)
+++
software_suite_v2/tuxware/tuxdroidserver/trunk/util/applicationserver/gadget/GadgetsContainer.py
2009-03-27 15:28:02 UTC (rev 4224)
@@ -37,6 +37,7 @@
self.__autoDeployer.setOnPluginDeployedCallback(self.__onPluginDeployed)
self.__autoDeployer.setOnPluginUndeployedCallback(self.__onPluginUndeployed)
self.__autoDeployer.setOnPluginDeploymentErrorCallback(self.__onPluginDeploymentError)
+ self.__onDirectoryDeployedCallback = None
self.__onGadgetDeployedCallback = None
self.__onGadgetDeploymentErrorCallback = None
self.__onGadgetUndeployedCallback = None
@@ -158,7 +159,7 @@
"""Get if the container is deployed or not.
@return: A boolean.
"""
- return self.__autoDeployer.isDeployed
+ return self.__autoDeployer.isDeployed()
#
--------------------------------------------------------------------------
# Set the directory deployed event callback.
@@ -170,6 +171,7 @@
def onDirectoryDeployed(observerName):
pass
"""
+ self.__onDirectoryDeployedCallback = funct
self.__autoDeployer.setOnDirectoryDeployedCallback(funct)
#
--------------------------------------------------------------------------
@@ -236,6 +238,9 @@
if gadget != None:
if self.__onGadgetDeployedCallback != None:
self.__onGadgetDeployedCallback(gadget, pluginPath)
+ if self.isDeployed():
+ if self.__onDirectoryDeployedCallback != None:
+ self.__onDirectoryDeployedCallback(observerName)
result = True
else:
if self.__onGadgetDeploymentErrorCallback != None:
@@ -261,6 +266,9 @@
self.__onGadgetUndeployedCallback(gadget, pluginPath)
# Destroy the gadget
self.__destroyGadget(gadget)
+ if self.isDeployed():
+ if self.__onDirectoryDeployedCallback != None:
+ self.__onDirectoryDeployedCallback(observerName)
break
#
--------------------------------------------------------------------------
Modified:
software_suite_v2/tuxware/tuxdroidserver/trunk/util/attitunes/AttitunesContainer.py
===================================================================
---
software_suite_v2/tuxware/tuxdroidserver/trunk/util/attitunes/AttitunesContainer.py
2009-03-27 14:10:05 UTC (rev 4223)
+++
software_suite_v2/tuxware/tuxdroidserver/trunk/util/attitunes/AttitunesContainer.py
2009-03-27 15:28:02 UTC (rev 4224)
@@ -29,6 +29,7 @@
self.__autoDeployer.setOnPluginDeployedCallback(self.__onPluginDeployed)
self.__autoDeployer.setOnPluginUndeployedCallback(self.__onPluginUndeployed)
self.__autoDeployer.setOnPluginDeploymentErrorCallback(self.__onPluginDeploymentError)
+ self.__onDirectoryDeployedCallback = None
self.__onAttituneDeployedCallback = None
self.__onAttituneDeploymentErrorCallback = None
self.__onAttituneUndeployedCallback = None
@@ -87,7 +88,7 @@
"""Get if the container is deployed or not.
@return: A boolean.
"""
- return self.__autoDeployer.isDeployed
+ return self.__autoDeployer.isDeployed()
#
--------------------------------------------------------------------------
# Set the directory deployed event callback.
@@ -99,6 +100,7 @@
def onDirectoryDeployed(observerName):
pass
"""
+ self.__onDirectoryDeployedCallback = funct
self.__autoDeployer.setOnDirectoryDeployedCallback(funct)
#
--------------------------------------------------------------------------
@@ -166,6 +168,9 @@
if self.__onAttituneDeployedCallback != None:
self.__onAttituneDeployedCallback(attitune,
attitune.getWorkingPath())
+ if self.isDeployed():
+ if self.__onDirectoryDeployedCallback != None:
+ self.__onDirectoryDeployedCallback(observerName)
result = True
else:
if self.__onAttituneDeploymentErrorCallback != None:
@@ -192,6 +197,9 @@
attitune.getWorkingPath())
# Destroy the attitune
self.__destroyAttitune(attitune)
+ if self.isDeployed():
+ if self.__onDirectoryDeployedCallback != None:
+ self.__onDirectoryDeployedCallback(observerName)
break
#
--------------------------------------------------------------------------
Modified:
software_suite_v2/tuxware/tuxdroidserver/trunk/util/filesystem/AutoDeployer.py
===================================================================
---
software_suite_v2/tuxware/tuxdroidserver/trunk/util/filesystem/AutoDeployer.py
2009-03-27 14:10:05 UTC (rev 4223)
+++
software_suite_v2/tuxware/tuxdroidserver/trunk/util/filesystem/AutoDeployer.py
2009-03-27 15:28:02 UTC (rev 4224)
@@ -29,6 +29,7 @@
"""Constructor of the class.
"""
self.__dirMutex = threading.Lock()
+ self.__deployedMutex = threading.Lock()
self.__isDeployed = False
self.__eventMutex = threading.Lock()
self.__directoryObservers = []
@@ -50,15 +51,14 @@
def deploy(self):
"""Deploy the plugins from the referenced directories.
"""
+ if self.isDeployed():
+ return
self.__dirMutex.acquire()
- if self.__isDeployed:
- self.__dirMutex.release()
- return
for directoryObserver in self.__directoryObservers:
directoryObserver[0].start()
if self.__onDirectoryDeployedCallback != None:
self.__onDirectoryDeployedCallback(directoryObserver[1])
- self.__isDeployed = True
+ self.setDeployed(True)
self.__dirMutex.release()
#
--------------------------------------------------------------------------
@@ -67,16 +67,15 @@
def undeploy(self):
"""Undeploy the plugins from the referenced directories.
"""
+ if not self.isDeployed():
+ return
self.__dirMutex.acquire()
- if not self.__isDeployed:
- self.__dirMutex.release()
- return
for directoryObserver in self.__directoryObservers:
directoryObserver[0].stop()
if self.__onDirectoryUndeployedCallback != None:
self.__onDirectoryUndeployedCallback(directoryObserver[1])
RMDirs(self.__baseWorkingDirectory)
- self.__isDeployed = False
+ self.setDeployed(False)
self.__dirMutex.release()
#
--------------------------------------------------------------------------
@@ -86,12 +85,23 @@
"""Get if the auto-deployer is deployed or not.
@return: A boolean.
"""
- self.__dirMutex.acquire()
+ self.__deployedMutex.acquire()
isDeployed = self.__isDeployed
- self.__dirMutex.release()
+ self.__deployedMutex.release()
return isDeployed
#
--------------------------------------------------------------------------
+ # Set if the auto-deployer is deployed or not.
+ #
--------------------------------------------------------------------------
+ def setDeployed(self, isDeployed):
+ """Set if the auto-deployer is deployed or not.
+ @param isDeployed: True or False.
+ """
+ self.__deployedMutex.acquire()
+ self.__isDeployed = isDeployed
+ self.__deployedMutex.release()
+
+ #
--------------------------------------------------------------------------
# Add a directory in the directories list to deploy.
#
--------------------------------------------------------------------------
def addDirectory(self, directory, filters = []):
@@ -121,7 +131,7 @@
directoryObserver.setOnAddedFileCallback(self.__onObserverAddedFile)
directoryObserver.setOnRemovedFileCallback(self.__onObserverRemovedFile)
self.__directoryObservers.append([directoryObserver, dirName])
- if self.__isDeployed:
+ if self.isDeployed():
directoryObserver.start()
if self.__onDirectoryDeployedCallback != None:
self.__onDirectoryDeployedCallback(dirName)
@@ -140,7 +150,7 @@
if directoryObserver[0].getDirectory() == directory:
directoryObserver[0].stop()
self.__directoryObservers.remove(directoryObserver)
- if self.__isDeployed:
+ if self.isDeployed():
if self.__onDirectoryUndeployedCallback != None:
self.__onDirectoryUndeployedCallback(directoryObserver[1])
break
------------------------------------------------------------------------------
_______________________________________________
Tux-droid-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tux-droid-svn