green.zmq: pyzmq 13.x compatibility
Fixes 'Socket has no such option: _EVENTLET_SEND_EVENT' errors
This commit is contained in:

committed by
Sergey Shepelev

parent
b87ed20e8c
commit
0d692abb51
@@ -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()
|
||||||
|
Reference in New Issue
Block a user