56 lines
1.9 KiB
ReStructuredText
56 lines
1.9 KiB
ReStructuredText
PRLinger
|
|
========
|
|
|
|
Structure used with the ``PR_SockOpt_Linger`` socket option to specify
|
|
the time interval (in :ref:`PRIntervalTime` units) to linger on closing a
|
|
socket if any data remain in the socket send buffer.
|
|
|
|
|
|
Syntax
|
|
~~~~~~
|
|
|
|
.. code::
|
|
|
|
#include <prio.h>
|
|
|
|
typedef struct PRLinger {
|
|
PRBool polarity;
|
|
PRIntervalTime linger;
|
|
} PRLinger;
|
|
|
|
|
|
Fields
|
|
~~~~~~
|
|
|
|
The structure has the following fields:
|
|
|
|
``polarity``
|
|
Polarity of the option's setting: ``PR_FALSE`` means the option is
|
|
off, in which case the value of ``linger`` is ignored. ``PR_TRUE``
|
|
means the option is on, and the value of ``linger`` will be used to
|
|
determine how long :ref:`PR_Close` waits before returning.
|
|
``linger``
|
|
Time (in :ref:`PRIntervalTime` units) to linger before closing if any
|
|
data remain in the socket send buffer.
|
|
|
|
|
|
Description
|
|
~~~~~~~~~~~
|
|
|
|
By default, :ref:`PR_Close` returns immediately, but if there are any data
|
|
remaining in the socket send buffer, the system attempts to deliver the
|
|
data to the peer. The ``PR_SockOpt_Linger`` socket option, with a value
|
|
represented by a structure of type :ref:`PRLinger`, makes it possible to
|
|
change this default as follows:
|
|
|
|
- If ``polarity`` is set to ``PR_FALSE``, :ref:`PR_Close` returns
|
|
immediately, but if there are any data remaining in the socket send
|
|
buffer, the runtime attempts to deliver the data to the peer.
|
|
- If ``polarity`` is set to ``PR_TRUE`` and ``linger`` is set to 0
|
|
(``PR_INTERVAL_NO_WAIT``), the runtime aborts the connection when it
|
|
is closed and discards any data remaining in the socket send buffer.
|
|
- If ``polarity`` is set to ``PR_TRUE`` and ``linger`` is nonzero, the
|
|
runtime *lingers* when the socket is closed. That is, if any data
|
|
remains in the socket send buffer, :ref:`PR_Close` blocks until either
|
|
all the data is sent and acknowledged by the peer or the interval
|
|
specified by ``linger`` expires.
|