def wait_readwrite(fileno, timeout=-1, timeout_exc=_socket.timeout('timed out')): evt = core.readwrite_event(fileno, _wait_helper, timeout, (getcurrent(), timeout_exc)) try: switch_result = get_hub().switch() assert evt is switch_result, 'Invalid switch into wait_readwrite(): %r' % (switch_result, ) finally: evt.cancel()
def wait_readwrite(fileno, timeout=None, timeout_exc=timeout('timed out'), event=None): """Block the current greenlet until *fileno* is ready to read or write. If *timeout* is non-negative, then *timeout_exc* is raised after *timeout* second has passed. By default *timeout_exc* is ``socket.timeout('timed out')``. If :func:`cancel_wait` is called, raise ``socket.error(EBADF, 'File descriptor was closed in another greenlet')``. """ if event is None: event = core.readwrite_event(fileno, _wait_helper, timeout, (getcurrent(), timeout_exc)) else: assert event.callback == _wait_helper, event.callback assert event.arg is None, 'This event is already used by another greenlet: %r' % ( event.arg, ) event.arg = (getcurrent(), timeout_exc) event.add(timeout) try: switch_result = get_hub().switch() assert event is switch_result, 'Invalid switch into wait_readwrite(): %r' % ( switch_result, ) finally: event.arg = None event.cancel()
def wait_readwrite(fileno, timeout=-1, timeout_exc=_socket.timeout('timed out')): evt = core.readwrite_event(fileno, _wait_helper, timeout, (getcurrent(), timeout_exc)) try: switch_result = get_hub().switch() assert evt is switch_result, 'Invalid switch into wait_readwrite(): %r' % ( switch_result, ) finally: evt.cancel()
def wait_readwrite(fileno, timeout=None, timeout_exc=timeout('timed out'), event=None): """Block the current greenlet until *fileno* is ready to read or write. If *timeout* is non-negative, then *timeout_exc* is raised after *timeout* second has passed. By default *timeout_exc* is ``socket.timeout('timed out')``. If :func:`cancel_wait` is called, raise ``socket.error(EBADF, 'File descriptor was closed in another greenlet')``. """ if event is None: event = core.readwrite_event(fileno, _wait_helper, timeout, (getcurrent(), timeout_exc)) else: assert event.callback == _wait_helper, event.callback assert event.arg is None, 'This event is already used by another greenlet: %r' % (event.arg, ) event.arg = (getcurrent(), timeout_exc) event.add(timeout) try: switch_result = get_hub().switch() assert event is switch_result, 'Invalid switch into wait_readwrite(): %r' % (switch_result, ) finally: event.arg = None event.cancel()