summaryrefslogtreecommitdiffstats
path: root/pyload/manager/event
diff options
context:
space:
mode:
authorGravatar Walter Purcaro <vuolter@users.noreply.github.com> 2015-04-13 17:20:59 +0200
committerGravatar Walter Purcaro <vuolter@users.noreply.github.com> 2015-04-13 17:20:59 +0200
commite00ef98491f79ae8aa972ae1473dae4a7b78c07e (patch)
tree31be0c7cdcebb61525bcc387bcf15d265a1c494a /pyload/manager/event
parentFix except (diff)
downloadpyload-e00ef98491f79ae8aa972ae1473dae4a7b78c07e.tar.xz
Cleanup
Diffstat (limited to 'pyload/manager/event')
-rw-r--r--pyload/manager/event/Scheduler.py14
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()