diff options
author | Rajith Muditha Attapattu <rajith@apache.org> | 2011-05-27 15:44:23 +0000 |
---|---|---|
committer | Rajith Muditha Attapattu <rajith@apache.org> | 2011-05-27 15:44:23 +0000 |
commit | 66765100f4257159622cefe57bed50125a5ad017 (patch) | |
tree | a88ee23bb194eb91f0ebb2d9b23ff423e3ea8e37 /python/qpid/concurrency.py | |
parent | 1aeaa7b16e5ce54f10c901d75c4d40f9f88b9db6 (diff) | |
parent | 88b98b2f4152ef59a671fad55a0d08338b6b78ca (diff) | |
download | qpid-python-rajith_jms_client.tar.gz |
Creating a branch for experimenting with some ideas for JMS client.rajith_jms_client
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/rajith_jms_client@1128369 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'python/qpid/concurrency.py')
-rw-r--r-- | python/qpid/concurrency.py | 106 |
1 files changed, 0 insertions, 106 deletions
diff --git a/python/qpid/concurrency.py b/python/qpid/concurrency.py deleted file mode 100644 index eefe0d445f..0000000000 --- a/python/qpid/concurrency.py +++ /dev/null @@ -1,106 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -import compat, inspect, time - -def synchronized(meth): - args, vargs, kwargs, defs = inspect.getargspec(meth) - scope = {} - scope["meth"] = meth - exec """ -def %s%s: - %s - %s._lock.acquire() - try: - return meth%s - finally: - %s._lock.release() -""" % (meth.__name__, inspect.formatargspec(args, vargs, kwargs, defs), - repr(inspect.getdoc(meth)), args[0], - inspect.formatargspec(args, vargs, kwargs, defs, - formatvalue=lambda x: ""), - args[0]) in scope - return scope[meth.__name__] - -class Waiter(object): - - def __init__(self, condition): - self.condition = condition - - def wait(self, predicate, timeout=None): - passed = 0 - start = time.time() - while not predicate(): - if timeout is None: - # XXX: this timed wait thing is not necessary for the fast - # condition from this module, only for the condition impl from - # the threading module - - # using the timed wait prevents keyboard interrupts from being - # blocked while waiting - self.condition.wait(3) - elif passed < timeout: - self.condition.wait(timeout - passed) - else: - return bool(predicate()) - passed = time.time() - start - return True - - def notify(self): - self.condition.notify() - - def notifyAll(self): - self.condition.notifyAll() - -class Condition: - - def __init__(self, lock): - self.lock = lock - self.waiters = [] - self.waiting = [] - - def notify(self): - assert self.lock._is_owned() - if self.waiting: - self.waiting[0].wakeup() - - def notifyAll(self): - assert self.lock._is_owned() - for w in self.waiting: - w.wakeup() - - def wait(self, timeout=None): - assert self.lock._is_owned() - if not self.waiters: - self.waiters.append(compat.selectable_waiter()) - sw = self.waiters.pop(0) - self.waiting.append(sw) - try: - st = self.lock._release_save() - sw.wait(timeout) - finally: - self.lock._acquire_restore(st) - self.waiting.remove(sw) - self.waiters.append(sw) - - def gc(self): - assert self.lock._is_owned() - while self.waiters: - sw = self.waiters.pop(0) - sw.close() |