MCPcopy Index your code
hub / github.com/Bitmessage/PyBitmessage / poll_poller

Function poll_poller

src/network/asyncore_pollchoose.py:253–301  ·  view source on GitHub ↗

A poller which uses poll(), available on most UNIXen.

(timeout=0.0, map=None)

Source from the content-addressed store, hash-verified

251 current_thread().stop.wait(timeout)
252
253def poll_poller(timeout=0.0, map=None):
254 """A poller which uses poll(), available on most UNIXen."""
255 if map is None:
256 map = socket_map
257 if timeout is not None:
258 # timeout is in milliseconds
259 timeout = int(timeout*1000)
260 try:
261 poll_poller.pollster
262 except AttributeError:
263 poll_poller.pollster = select.poll()
264 if map:
265 for fd, obj in list(map.items()):
266 flags = newflags = 0
267 if obj.readable():
268 flags |= select.POLLIN | select.POLLPRI
269 newflags |= OP_READ
270 else:
271 newflags &= ~ OP_READ
272 # accepting sockets should not be writable
273 if obj.writable() and not obj.accepting:
274 flags |= select.POLLOUT
275 newflags |= OP_WRITE
276 else:
277 newflags &= ~ OP_WRITE
278 if newflags != obj.poller_flags:
279 obj.poller_flags = newflags
280 try:
281 if obj.poller_registered:
282 poll_poller.pollster.modify(fd, flags)
283 else:
284 poll_poller.pollster.register(fd, flags)
285 obj.poller_registered = True
286 except IOError:
287 pass
288 try:
289 r = poll_poller.pollster.poll(timeout)
290 except KeyboardInterrupt:
291 r = []
292 except socket.error as err:
293 if err.args[0] in (EBADF, WSAENOTSOCK, EINTR):
294 return
295 for fd, flags in random.sample(r, len(r)):
296 obj = map.get(fd)
297 if obj is None:
298 continue
299 readwrite(obj, flags)
300 else:
301 current_thread().stop.wait(timeout)
302
303# Aliases for backward compatibility
304poll = select_poller

Callers

nothing calls this directly

Calls 7

readwriteFunction · 0.85
itemsMethod · 0.80
registerMethod · 0.80
waitMethod · 0.80
readableMethod · 0.45
writableMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected