1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 from __future__ import absolute_import
21
22 import weakref
23
24 from cproton import PN_INVALID_SOCKET, \
25 pn_incref, pn_decref, \
26 pn_handler_add, pn_handler_clear, pn_pyhandler, \
27 pn_selectable_is_reading, pn_selectable_attachments, pn_selectable_set_reading, \
28 pn_selectable_expired, pn_selectable_set_fd, pn_selectable_set_registered, pn_selectable_writable, \
29 pn_selectable_is_writing, pn_selectable_set_deadline, pn_selectable_is_registered, pn_selectable_terminate, \
30 pn_selectable_get_deadline, pn_selectable_is_terminal, pn_selectable_readable, \
31 pn_selectable_release, pn_selectable_set_writing, pn_selectable_get_fd
32
33 from ._common import millis2secs, secs2millis
34 from ._wrapper import Wrapper
35
36 from . import _compat
37
38 _DEFAULT = False
42
43 @staticmethod
45 if impl is None:
46 return None
47 else:
48 return Selectable(impl)
49
52
55
57 if fd is _DEFAULT:
58 return pn_selectable_get_fd(self._impl)
59 elif fd is None:
60 pn_selectable_set_fd(self._impl, PN_INVALID_SOCKET)
61 else:
62 pn_selectable_set_fd(self._impl, fd)
63
65 return pn_selectable_is_reading(self._impl)
66
68 pn_selectable_set_reading(self._impl, bool(val))
69
70 reading = property(_is_reading, _set_reading)
71
73 return pn_selectable_is_writing(self._impl)
74
76 pn_selectable_set_writing(self._impl, bool(val))
77
78 writing = property(_is_writing, _set_writing)
79
81 tstamp = pn_selectable_get_deadline(self._impl)
82 if tstamp:
83 return millis2secs(tstamp)
84 else:
85 return None
86
89
90 deadline = property(_get_deadline, _set_deadline)
91
93 pn_selectable_readable(self._impl)
94
96 pn_selectable_writable(self._impl)
97
99 pn_selectable_expired(self._impl)
100
102 return pn_selectable_is_registered(self._impl)
103
105 pn_selectable_set_registered(self._impl, registered)
106
107 registered = property(_is_registered, _set_registered,
108 doc="""
109 The registered property may be get/set by an I/O polling system to
110 indicate whether the fd has been registered or not.
111 """)
112
113 @property
115 return pn_selectable_is_terminal(self._impl)
116
118 pn_selectable_terminate(self._impl)
119
121 pn_selectable_release(self._impl)
122
125
126 - def __init__(self, handler, on_error=None):
129
134
140
144 self.handlers = []
145 self.delegate = weakref.ref(delegate)
146
148 from ._events import _dispatch
149 delegate = self.delegate()
150 if delegate:
151 _dispatch(delegate, method, event)
152
171
207
210 if obj is None:
211 return None
212 elif isinstance(obj, WrappedHandler):
213 impl = obj._impl
214 pn_incref(impl)
215 return impl
216 else:
217 return pn_pyhandler(_cadapter(obj, on_error))
218