Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit f59c6b4

Browse filesBrowse files
committed
docs/uselect: Describe POLLHUP/POLLERR semantics in more details.
Per POSIX, http://pubs.opengroup.org/onlinepubs/9699919799/functions/poll.html these flags aren't valid in the input eventmask. Instead, they can be returned in unsolicited manner in the output eventmask at any time.
1 parent 50cffcf commit f59c6b4
Copy full SHA for f59c6b4

1 file changed

+23-14Lines changed: 23 additions & 14 deletions

File tree

Expand file treeCollapse file tree
Open diff view settings
Filter options
Expand file treeCollapse file tree
Open diff view settings
Collapse file

‎docs/library/uselect.rst‎

Copy file name to clipboardExpand all lines: docs/library/uselect.rst
+23-14Lines changed: 23 additions & 14 deletions
  • Display the source diff
  • Display the rich diff
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,15 @@ Methods
3535

3636
Register *obj* for polling. *eventmask* is logical OR of:
3737

38-
* ``select.POLLIN`` - data available for reading
39-
* ``select.POLLOUT`` - more data can be written
40-
* ``select.POLLERR`` - error occurred
41-
* ``select.POLLHUP`` - end of stream/connection termination detected
38+
* `uselect.POLLIN` - data available for reading
39+
* `uselect.POLLOUT` - more data can be written
4240

43-
*eventmask* defaults to ``select.POLLIN | select.POLLOUT``.
41+
Note that flags like `uselect.POLLHUP` and `uselect.POLLERR` are
42+
*not* valid as input eventmask (these are unsolicited events which
43+
will be returned from `poll()` regardless of whether they are asked
44+
for). This semantics is per POSIX.
45+
46+
*eventmask* defaults to ``uselect.POLLIN | uselect.POLLOUT``.
4447

4548
.. method:: poll.unregister(obj)
4649

@@ -52,15 +55,21 @@ Methods
5255

5356
.. method:: poll.poll(timeout=-1)
5457

55-
Wait for at least one of the registered objects to become ready, with optional
56-
timeout in milliseconds (if *timeout* arg is not specified or -1, there is no
57-
timeout). Returns list of (``obj``, ``event``, ...) tuples, ``event`` element specifies
58-
which events happened with a stream and is a combination of ``select.POLL*``
59-
constants described above. There may be other elements in tuple, depending
60-
on a platform and version, so don't assume that its size is 2. In case of
61-
timeout, an empty list is returned.
62-
63-
Timeout is in milliseconds.
58+
Wait for at least one of the registered objects to become ready or have an
59+
exceptional condition, with optional timeout in milliseconds (if *timeout*
60+
arg is not specified or -1, there is no timeout).
61+
62+
Returns list of (``obj``, ``event``, ...) tuples. There may be other elements in
63+
tuple, depending on a platform and version, so don't assume that its size is 2.
64+
The ``event`` element specifies which events happened with a stream and
65+
is a combination of ``uselect.POLL*`` constants described above. Note that
66+
flags `uselect.POLLHUP` and `uselect.POLLERR` can be returned at any time
67+
(even if were not asked for), and must be acted on accordingly (the
68+
corresponding stream unregistered from poll and likely closed), because
69+
otherwise all further invocations of `poll()` may return immediately with
70+
these flags set for this stream again.
71+
72+
In case of timeout, an empty list is returned.
6473

6574
.. admonition:: Difference to CPython
6675
:class: attention

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.