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