diff options
author | Walter Purcaro <vuolter@users.noreply.github.com> | 2015-04-13 17:20:59 +0200 |
---|---|---|
committer | Walter Purcaro <vuolter@users.noreply.github.com> | 2015-04-13 17:20:59 +0200 |
commit | e00ef98491f79ae8aa972ae1473dae4a7b78c07e (patch) | |
tree | 31be0c7cdcebb61525bcc387bcf15d265a1c494a /pyload/manager/event/Scheduler.py | |
parent | Fix except (diff) | |
download | pyload-e00ef98491f79ae8aa972ae1473dae4a7b78c07e.tar.xz |
Cleanup
Diffstat (limited to 'pyload/manager/event/Scheduler.py')
-rw-r--r-- | pyload/manager/event/Scheduler.py | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/pyload/manager/event/Scheduler.py b/pyload/manager/event/Scheduler.py index 2cb537383..d67d9063a 100644 --- a/pyload/manager/event/Scheduler.py +++ b/pyload/manager/event/Scheduler.py @@ -11,13 +11,16 @@ class AlreadyCalled(Exception): class Deferred(object): + def __init__(self): self.call = [] self.result = () + def addCallback(self, f, *cargs, **ckwargs): self.call.append((f, cargs, ckwargs)) + def callback(self, *args, **kwargs): if self.result: raise AlreadyCalled @@ -29,11 +32,13 @@ class Deferred(object): class Scheduler(object): + def __init__(self, core): self.core = core self.queue = PriorityQueue() + def addJob(self, t, call, args=[], kwargs={}, threaded=True): d = Deferred() t += time() @@ -41,6 +46,7 @@ class Scheduler(object): self.queue.put((t, j)) return d + def removeJob(self, d): """ :param d: defered object @@ -58,6 +64,7 @@ class Scheduler(object): return False + def work(self): while True: t, j = self.queue.get() @@ -72,6 +79,7 @@ class Scheduler(object): class Job(object): + def __init__(self, time, call, args=[], kwargs={}, deferred=None, threaded=True): self.time = float(time) self.call = call @@ -80,6 +88,7 @@ class Job(object): self.deferred = deferred self.threaded = threaded + def run(self): ret = self.call(*self.args, **self.kwargs) if self.deferred is None: @@ -87,6 +96,7 @@ class Job(object): else: self.deferred.callback(ret) + def start(self): if self.threaded: t = Thread(target=self.run) @@ -103,17 +113,21 @@ class PriorityQueue(object): self.queue = [] self.lock = Lock() + def __iter__(self): return iter(self.queue) + def __delitem__(self, key): del self.queue[key] + def put(self, element): self.lock.acquire() heappush(self.queue, element) self.lock.release() + def get(self): """ return element or None """ self.lock.acquire() |