summaryrefslogtreecommitdiff
path: root/portato/waiting_queue.py
diff options
context:
space:
mode:
Diffstat (limited to 'portato/waiting_queue.py')
-rw-r--r--portato/waiting_queue.py88
1 files changed, 44 insertions, 44 deletions
diff --git a/portato/waiting_queue.py b/portato/waiting_queue.py
index 32839d3..bc2c50c 100644
--- a/portato/waiting_queue.py
+++ b/portato/waiting_queue.py
@@ -17,47 +17,47 @@ from Queue import Queue
class WaitingQueue (Queue):
- def __init__ (self, setTrue = True, threadClass = Thread):
- if not issubclass(threadClass, Thread):
- raise ValueError, "Only subclasses of threading.Thread are allowed."
-
- Queue.__init__(self)
- self.event = Event()
- self.counter = 0
- self.threadClass = threadClass
-
- if setTrue:
- self.event.set() # true at the beginning
-
- waitingThread = self.threadClass(name = "Waiting-Queue-Thread", target = self.runThread)
- waitingThread.setDaemon(True)
- waitingThread.start()
-
- def put (self, method, *args, **kwargs):
- self.counter += 1;
-
- if "caller" in kwargs:
- name = "Waiting Thread #%d (called by:%s)" % (self.counter, kwargs["caller"])
- del kwargs["caller"]
- else:
- name = "Waiting Thread #%d" % self.counter
-
- t = self.threadClass(name = name, target = method, args = args, kwargs = kwargs)
- t.setDaemon(True)
- Queue.put(self, t, False)
-
- def runThread (self):
- while True:
- self.event.wait()
- t = self.get(True)
- self.event.clear()
- t.run()
-
- def next (self):
- self.event.set()
-
- def clear (self):
- self.mutex.acquire()
- self.queue.clear()
- self.mutex.release()
- self.event.set()
+ def __init__ (self, setTrue = True, threadClass = Thread):
+ if not issubclass(threadClass, Thread):
+ raise ValueError, "Only subclasses of threading.Thread are allowed."
+
+ Queue.__init__(self)
+ self.event = Event()
+ self.counter = 0
+ self.threadClass = threadClass
+
+ if setTrue:
+ self.event.set() # true at the beginning
+
+ waitingThread = self.threadClass(name = "Waiting-Queue-Thread", target = self.runThread)
+ waitingThread.setDaemon(True)
+ waitingThread.start()
+
+ def put (self, method, *args, **kwargs):
+ self.counter += 1;
+
+ if "caller" in kwargs:
+ name = "Waiting Thread #%d (called by:%s)" % (self.counter, kwargs["caller"])
+ del kwargs["caller"]
+ else:
+ name = "Waiting Thread #%d" % self.counter
+
+ t = self.threadClass(name = name, target = method, args = args, kwargs = kwargs)
+ t.setDaemon(True)
+ Queue.put(self, t, False)
+
+ def runThread (self):
+ while True:
+ self.event.wait()
+ t = self.get(True)
+ self.event.clear()
+ t.run()
+
+ def next (self):
+ self.event.set()
+
+ def clear (self):
+ self.mutex.acquire()
+ self.queue.clear()
+ self.mutex.release()
+ self.event.set()