summaryrefslogtreecommitdiff
path: root/python/qpid/util.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/qpid/util.py')
-rw-r--r--python/qpid/util.py27
1 files changed, 26 insertions, 1 deletions
diff --git a/python/qpid/util.py b/python/qpid/util.py
index e41dfc75fb..d03a9bd7e9 100644
--- a/python/qpid/util.py
+++ b/python/qpid/util.py
@@ -17,7 +17,7 @@
# under the License.
#
-import os, socket
+import os, socket, time
def connect(host, port):
sock = socket.socket()
@@ -40,3 +40,28 @@ def listen(host, port, predicate = lambda: True, bound = lambda: None):
def mtime(filename):
return os.stat(filename).st_mtime
+
+def wait(condition, predicate, timeout=None):
+ condition.acquire()
+ try:
+ passed = 0
+ start = time.time()
+ while not predicate():
+ if timeout is None:
+ condition.wait()
+ elif passed < timeout:
+ condition.wait(timeout - passed)
+ else:
+ return False
+ passed = time.time() - start
+ return True
+ finally:
+ condition.release()
+
+def notify(condition, action=lambda: None):
+ condition.acquire()
+ try:
+ action()
+ condition.notifyAll()
+ finally:
+ condition.release()