diff options
Diffstat (limited to 'paste/webkit/FakeWebware/TaskKit/TaskHandler.py')
-rw-r--r-- | paste/webkit/FakeWebware/TaskKit/TaskHandler.py | 138 |
1 files changed, 0 insertions, 138 deletions
diff --git a/paste/webkit/FakeWebware/TaskKit/TaskHandler.py b/paste/webkit/FakeWebware/TaskKit/TaskHandler.py deleted file mode 100644 index 51f5f98..0000000 --- a/paste/webkit/FakeWebware/TaskKit/TaskHandler.py +++ /dev/null @@ -1,138 +0,0 @@ - -from time import time, sleep -from threading import Event, Thread - - -class TaskHandler: - """ - While the Task class only knows what task to perform with the run()-method, - the TaskHandler has all the knowledge about the periodicity of the task. - Instances of this class are managed by the Scheduler in the - scheduled, running and onDemand dictionaries. - """ - - ## Init ## - - def __init__(self, scheduler, start, period, task, name): - self._scheduler = scheduler - self._task = task - self._name = name - self._thread = None - self._isRunning = 0 - self._suspend = 0 - self._lastTime = None - self._startTime = start - self._registerTime = time() - self._reregister = 1 - self._rerun = 0 - self._period = abs(period) - - - ## Scheduling ## - - def reset(self, start, period, task, reregister): - self._startTime = start - self._period = abs(period) - self._task = task - self._reregister = reregister - - def runTask(self): - """ - Runs this task in a background thread. - """ - if self._suspend: - self._scheduler.notifyCompletion(self) - return - self._rerun = 0 - self._thread = Thread(None, self._task._run, self.name(), (self,)) - self._isRunning = 1 - self._thread.start() - - def reschedule(self): - """ - Method to determine whether this task should be rescheduled. Increments the - startTime and returns true if this is a periodically executed task. - """ - if self._period == 0: - return 0 - else: - if self._lastTime - self._startTime > self._period: #if the time taken to run the task exceeds the period - self._startTime = self._lastTime + self._period - else: - self._startTime = self._startTime + self._period - return 1 - - def notifyCompletion(self): - self._isRunning = 0 - self._lastTime = time() - self._scheduler.notifyCompletion(self) - - - ## Attributes ## - - def isRunning(self): - return self._isRunning - - def runAgain(self): - """ - This method lets the Scheduler check to see whether this task should be - re-run when it terminates - """ - return self._rerun - - def isOnDemand(self): - """ - Returns true if this task is not scheduled for periodic execution. - """ - return self._period == 1 - - def runOnCompletion(self): - """ - Method to request that this task be re-run after its current completion. - Intended for on-demand tasks that are requested by the Scheduler while - they are already running. - """ - self._rerun = 1 - - def unregister(self): - """ - Method to request that this task not be kept after its current completion. - Used to remove a task from the scheduler - """ - self._reregister = 0 - self._rerun = 0 - - def disable(self): - """ - Method to disable future invocations of this task. - """ - self._suspend = 1 - - def enable(self): - """ - Method to enable future invocations of this task. - """ - self._suspend = 0 - - def period(self): - """ - Returns the period of this task. - """ - return self._period - - def setPeriod(self, period): - """ - Mmethod to change the period for this task. - """ - self._period = period - - def stop(self): - self._isRunning = 0 - - def name(self): - return self._name - - def startTime(self, newTime=None): - if newTime: - self._startTime = newTime - return self._startTime |