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

Reply via email to