summaryrefslogtreecommitdiff
path: root/python/qpid/selector.py
diff options
context:
space:
mode:
authorRafael H. Schloming <rhs@apache.org>2009-10-23 18:47:26 +0000
committerRafael H. Schloming <rhs@apache.org>2009-10-23 18:47:26 +0000
commita581be3f131e53b3f18aff392d5d28222d20e71d (patch)
tree02d12d47aaf3eb1247b77ac2442ec6857ac82f7f /python/qpid/selector.py
parenta63be09b172c9091b87dedaceaa755777b914756 (diff)
downloadqpid-python-a581be3f131e53b3f18aff392d5d28222d20e71d.tar.gz
reworked fix of r827747 (QPID-2149)
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@829173 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'python/qpid/selector.py')
-rw-r--r--python/qpid/selector.py34
1 files changed, 5 insertions, 29 deletions
diff --git a/python/qpid/selector.py b/python/qpid/selector.py
index a7993be0b1..ca5946c3f9 100644
--- a/python/qpid/selector.py
+++ b/python/qpid/selector.py
@@ -16,8 +16,8 @@
# specific language governing permissions and limitations
# under the License.
#
-import atexit, time, socket
-from compat import select, set
+import atexit, time
+from compat import select, set, selectable_waiter
from threading import Thread, Lock
class Acceptor:
@@ -39,23 +39,6 @@ class Acceptor:
sock, addr = self.sock.accept()
self.handler(sock)
-class Sink:
-
- def __init__(self, sock):
- self.sock = sock
-
- def fileno(self):
- return self.sock.fileno()
-
- def reading(self):
- return True
-
- def readable(self):
- self.sock.recv(65536)
-
- def __repr__(self):
- return "Sink(%r)" % self.sock.fileno()
-
class Selector:
lock = Lock()
@@ -78,20 +61,13 @@ class Selector:
self.selectables = set()
self.reading = set()
self.writing = set()
- listener = socket.socket()
- listener.bind(('', 0))
- listener.listen(1)
- me_ip, me_port = listener.getsockname()
- self.wakeup_sock = socket.socket()
- self.wakeup_sock.connect(("127.0.0.1", me_port))
- self.wait_sock, me = listener.accept()
- listener.close()
- self.reading.add(Sink(self.wait_sock))
+ self.waiter = selectable_waiter()
+ self.reading.add(self.waiter)
self.stopped = False
self.thread = None
def wakeup(self):
- self.wakeup_sock.send("\0")
+ self.waiter.wakeup()
def register(self, selectable):
self.selectables.add(selectable)