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 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): class LockReleaseError(Exception):
pass pass
@@ -196,10 +205,10 @@ class Socket(_Socket):
def __init__(self, context, socket_type): def __init__(self, context, socket_type):
super(Socket, self).__init__(context, socket_type) super(Socket, self).__init__(context, socket_type)
self._eventlet_send_event = _BlockedThread() self.__dict__['_eventlet_send_event'] = _BlockedThread()
self._eventlet_recv_event = _BlockedThread() self.__dict__['_eventlet_recv_event'] = _BlockedThread()
self._eventlet_send_lock = _QueueLock() self.__dict__['_eventlet_send_lock'] = _QueueLock()
self._eventlet_recv_lock = _QueueLock() self.__dict__['_eventlet_recv_lock'] = _QueueLock()
def event(fd): def event(fd):
# Some events arrived at the zmq socket. This may mean # Some events arrived at the zmq socket. This may mean
@@ -214,14 +223,14 @@ class Socket(_Socket):
_Socket_getsockopt(self, EVENTS) _Socket_getsockopt(self, EVENTS)
hub = hubs.get_hub() 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) @_wraps(_Socket.close)
def close(self, linger=None): def close(self, linger=None):
super(Socket, self).close(linger) super(Socket, self).close(linger)
if self._eventlet_listener is not None: if self._eventlet_listener is not None:
hubs.get_hub().remove(self._eventlet_listener) hubs.get_hub().remove(self._eventlet_listener)
self._eventlet_listener = None self.__dict__['_eventlet_listener'] = None
# wake any blocked threads # wake any blocked threads
self._eventlet_send_event.wake() self._eventlet_send_event.wake()
self._eventlet_recv_event.wake() self._eventlet_recv_event.wake()