Author: remi
Date: 2009-04-07 10:32:14 +0200 (Tue, 07 Apr 2009)
New Revision: 4378

Modified:
   
software_suite_v2/tuxware/tuxdroidserver/trunk/resources/01_robot_system/resourceScheduler.py
   software_suite_v2/tuxware/tuxdroidserver/trunk/util/scheduler/Scheduler.py
Log:
* prepare to implement load and store tasks
* updated strategy of the task events

Modified: 
software_suite_v2/tuxware/tuxdroidserver/trunk/resources/01_robot_system/resourceScheduler.py
===================================================================
--- 
software_suite_v2/tuxware/tuxdroidserver/trunk/resources/01_robot_system/resourceScheduler.py
       2009-04-07 07:25:21 UTC (rev 4377)
+++ 
software_suite_v2/tuxware/tuxdroidserver/trunk/resources/01_robot_system/resourceScheduler.py
       2009-04-07 08:32:14 UTC (rev 4378)
@@ -13,12 +13,16 @@
 ST_NAME_SCM_RUN = "scheduler_manager_run"
 ST_NAME_SCM_TASK_ADDED = "scheduler_manager_task_added"
 ST_NAME_SCM_TASK_REMOVED = "scheduler_manager_task_removed"
+ST_NAME_SCM_TASKS_LOADED = "scheduler_manager_tasks_loaded"
+ST_NAME_SCM_TASKS_UNLOADED = "scheduler_manager_tasks_unloaded"
 
 # Attitune manager events/statuses list
 SW_NAME_SCHEDULER_MANAGER = [
     ST_NAME_SCM_RUN,
     ST_NAME_SCM_TASK_ADDED,
     ST_NAME_SCM_TASK_REMOVED,
+    ST_NAME_SCM_TASKS_LOADED,
+    ST_NAME_SCM_TASKS_UNLOADED,
 ]
 
 # 
------------------------------------------------------------------------------
@@ -38,6 +42,8 @@
         self.__scheduler = Scheduler(globals())
         self.__scheduler.setOnTaskAddedCallback(self.__onTaskAdded)
         self.__scheduler.setOnTaskRemovedCallback(self.__onTaskRemoved)
+        self.__scheduler.setOnTasksLoadedCallback(self.__onTasksLoaded)
+        self.__scheduler.setOnTasksUnloadedCallback(self.__onTasksUnloaded)
         # Registering the scheduler manager statuses.
         for statusName in SW_NAME_SCHEDULER_MANAGER:
             eventsHandler.insert(statusName)
@@ -75,14 +81,22 @@
 
     def __onTaskAdded(self, task):
         print "Task added :", task.getDescription().getName(), 
task.getDescription().toString()
-        self.__publishEvents(True, ST_NAME_SCM_TASK_ADDED,
+        self.__publishEvents(False, ST_NAME_SCM_TASK_ADDED,
             [task.getDescription().getId(), task.getDescription().getName()])
 
     def __onTaskRemoved(self, task):
         print "Task removed :", task.getDescription().toString()
-        self.__publishEvents(True, ST_NAME_SCM_TASK_REMOVED,
+        self.__publishEvents(False, ST_NAME_SCM_TASK_REMOVED,
             [task.getDescription().getId(), task.getDescription().getName()])
 
+    def __onTasksLoaded(self):
+        print "Tasks loaded"
+        self.__publishEvents(True, ST_NAME_SCM_TASKS_LOADED, [])
+
+    def __onTasksUnloaded(self):
+        print "Tasks unloaded"
+        self.__publishEvents(True, ST_NAME_SCM_TASKS_UNLOADED, [])
+
     def weekMaskStringToList(self, weekMaskString):
         result = [True, True, True, True, True, True, True]
         try:

Modified: 
software_suite_v2/tuxware/tuxdroidserver/trunk/util/scheduler/Scheduler.py
===================================================================
--- software_suite_v2/tuxware/tuxdroidserver/trunk/util/scheduler/Scheduler.py  
2009-04-07 07:25:21 UTC (rev 4377)
+++ software_suite_v2/tuxware/tuxdroidserver/trunk/util/scheduler/Scheduler.py  
2009-04-07 08:32:14 UTC (rev 4378)
@@ -40,8 +40,39 @@
         self.__appGlobals = appGlobals
         self.__onTaskAddedCallback = None
         self.__onTaskRemovedCallback = None
+        self.__onTasksLoaded = None
+        self.__onTasksUnloaded = None
+        self.__tasksDirectory = None
+        self.__tasksLoaded = False
+        self.__tasksLoadedMutex = threading.Lock()
 
     # 
--------------------------------------------------------------------------
+    # Load tasks from a directory.
+    # 
--------------------------------------------------------------------------
+    def loadTasks(self, directory):
+        """Load tasks from a directory.
+        @param directory: Directory how to search the task configurations.
+        """
+        self.__tasksDirectory = directory
+        self.__tasksToExecuteStackMutex.acquire()
+        self.__tasksToExecuteStack = []
+        self.__tasksToExecuteStackMutex.release()
+        self.__setTasksLoaded(False)
+        # TODO : Complete this method ...
+        self.__setTasksLoaded(True)
+
+    # 
--------------------------------------------------------------------------
+    # Store tasks in a directory.
+    # 
--------------------------------------------------------------------------
+    def storeTasks(self):
+        """Store tasks in a directory.
+        """
+        if self.__tasksDirectory == None:
+            return
+        # TODO : Complete this method ...
+        print "Store tasks ..."
+
+    # 
--------------------------------------------------------------------------
     # Start the scheduler.
     # 
--------------------------------------------------------------------------
     def start(self):
@@ -82,6 +113,36 @@
         self.__startedMutex.release()
 
     # 
--------------------------------------------------------------------------
+    # Get if the tasks are loaded or not.
+    # 
--------------------------------------------------------------------------
+    def tasksAreLoaded(self):
+        """Get if the tasks are loaded or not.
+        @return: True or False
+        """
+        self.__tasksLoadedMutex.acquire()
+        result = self.__tasksLoaded
+        self.__tasksLoadedMutex.release()
+        return result
+
+    # 
--------------------------------------------------------------------------
+    # Set if the tasks are loaded or not.
+    # 
--------------------------------------------------------------------------
+    def __setTasksLoaded(self, value):
+        """Set if the tasks are loaded or not.
+        @param value: True or False
+        """
+        self.__tasksLoadedMutex.acquire()
+        self.__tasksLoaded = value
+        self.__tasksLoadedMutex.release()
+        if value:
+            if self.__onTasksLoadedCallback != None:
+                self.__onTasksLoadedCallback()
+        else:
+            self.storeTasks()
+            if self.__onTasksUnloadedCallback != None:
+                self.__onTasksUnloadedCallback()
+
+    # 
--------------------------------------------------------------------------
     # Generate a single id.
     # 
--------------------------------------------------------------------------
     def __generateSingleId(self, baseString = None):
@@ -149,8 +210,12 @@
             resultName = None
         self.__tasksToExecuteStackMutex.release()
         if resultId != None:
-            if self.__onTaskAddedCallback != None:
-                self.__onTaskAddedCallback(task)
+            self.storeTasks()
+            if self.tasksAreLoaded():
+                if self.__onTaskAddedCallback != None:
+                    self.__onTaskAddedCallback(task)
+                if self.__onTasksLoadedCallback != None:
+                    self.__onTasksLoadedCallback()
         return resultId, resultName
 
     # 
--------------------------------------------------------------------------
@@ -195,8 +260,12 @@
                 break
         self.__tasksToExecuteStackMutex.release()
         if task != None:
-            if self.__onTaskRemovedCallback != None:
-                self.__onTaskRemovedCallback(task)
+            self.storeTasks()
+            if self.tasksAreLoaded():
+                if self.__onTaskRemovedCallback != None:
+                    self.__onTaskRemovedCallback(task)
+                if self.__onTasksLoadedCallback != None:
+                    self.__onTasksLoadedCallback()
 
     # 
--------------------------------------------------------------------------
     # Remove a task from the scheduler by its name.
@@ -214,8 +283,12 @@
                 break
         self.__tasksToExecuteStackMutex.release()
         if task != None:
-            if self.__onTaskRemovedCallback != None:
-                self.__onTaskRemovedCallback(task)
+            self.storeTasks()
+            if self.tasksAreLoaded():
+                if self.__onTaskRemovedCallback != None:
+                    self.__onTaskRemovedCallback(task)
+                if self.__onTasksLoadedCallback != None:
+                    self.__onTasksLoadedCallback()
 
     # 
--------------------------------------------------------------------------
     # Remove a task from the scheduler.
@@ -235,6 +308,8 @@
         self.__tasksToExecuteStackMutex.acquire()
         self.__tasksToExecuteStack = []
         self.__tasksToExecuteStackMutex.release()
+        self.__setTasksLoaded(False)
+        self.__setTasksLoaded(True)
 
     # 
--------------------------------------------------------------------------
     # Set the on task added event callback.
@@ -261,6 +336,30 @@
         self.__onTaskRemovedCallback = funct
 
     # 
--------------------------------------------------------------------------
+    # Set the on tasks loaded event callback.
+    # 
--------------------------------------------------------------------------
+    def setOnTasksLoadedCallback(self, funct):
+        """Set the on tasks loaded event callback.
+        @param funct: Function pointer.
+        Function prototype:
+        def onTasksLoaded(self):
+            pass
+        """
+        self.__onTasksLoadedCallback = funct
+
+    # 
--------------------------------------------------------------------------
+    # Set the on tasks unloaded event callback.
+    # 
--------------------------------------------------------------------------
+    def setOnTasksUnloadedCallback(self, funct):
+        """Set the on tasks unloaded event callback.
+        @param funct: Function pointer.
+        Function prototype:
+        def onTasksUnloaded(self):
+            pass
+        """
+        self.__onTasksUnloadedCallback = funct
+
+    # 
--------------------------------------------------------------------------
     # Loop of the tasks checker.
     # 
--------------------------------------------------------------------------
     def __tasksCheckerLoop(self):
@@ -268,6 +367,7 @@
         """
         if self.isStarted():
             return
+        self.__setTasksLoaded(True)
         self.__setStarted(True)
         while self.isStarted():
             now = datetime.datetime.now()
@@ -295,4 +395,9 @@
             for task in tasksFinished:
                 if self.__onTaskRemovedCallback != None:
                     self.__onTaskRemovedCallback(task)
+            if len(tasksFinished) > 0:
+                self.storeTasks()
+                if self.__onTasksLoadedCallback != None:
+                    self.__onTasksLoadedCallback()
             time.sleep(1.0)
+        self.__setTasksLoaded(False)


------------------------------------------------------------------------------
This SF.net email is sponsored by:
High Quality Requirements in a Collaborative Environment.
Download a free trial of Rational Requirements Composer Now!
http://p.sf.net/sfu/www-ibm-com
_______________________________________________
Tux-droid-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tux-droid-svn

Reply via email to