green.zmq: pyzmq 13.x compatibility

Fixes 'Socket has no such option: _EVENTLET_SEND_EVENT' errors
This commit is contained in:
Edward George
2013-06-08 12:42:52 +01:00
committed by Sergey Shepelev
parent b87ed20e8c
commit 0d692abb51

View File

@@ -13,6 +13,15 @@ slurp_properties(__zmq__, globals(), ignore=__patched__)
from collections import deque
try:
# alias XREQ/XREP to DEALER/ROUTER if available
if not hasattr(__zmq__, 'XREQ'):
XREQ = DEALER
if not hasattr(__zmq__, 'XREP'):
XREP = ROUTER
except NameError:
pass
class LockReleaseError(Exception):
pass
@@ -196,10 +205,10 @@ class Socket(_Socket):
def __init__(self, context, socket_type):
super(Socket, self).__init__(context, socket_type)
self._eventlet_send_event = _BlockedThread()
self._eventlet_recv_event = _BlockedThread()
self._eventlet_send_lock = _QueueLock()
self._eventlet_recv_lock = _QueueLock()
self.__dict__['_eventlet_send_event'] = _BlockedThread()
self.__dict__['_eventlet_recv_event'] = _BlockedThread()
self.__dict__['_eventlet_send_lock'] = _QueueLock()
self.__dict__['_eventlet_recv_lock'] = _QueueLock()
def event(fd):
# Some events arrived at the zmq socket. This may mean
@@ -214,14 +223,14 @@ class Socket(_Socket):
_Socket_getsockopt(self, EVENTS)
hub = hubs.get_hub()
self._eventlet_listener = hub.add(hub.READ, self.getsockopt(FD), event)
self.__dict__['_eventlet_listener'] = hub.add(hub.READ, self.getsockopt(FD), event)
@_wraps(_Socket.close)
def close(self, linger=None):
super(Socket, self).close(linger)
if self._eventlet_listener is not None:
hubs.get_hub().remove(self._eventlet_listener)
self._eventlet_listener = None
self.__dict__['_eventlet_listener'] = None
# wake any blocked threads
self._eventlet_send_event.wake()
self._eventlet_recv_event.wake()