blob: f0e1656a468fbb663fbdb0bbc2e3d120f3e48093 [file] [log] [blame]
nn_getsockopt(3)
================
NAME
----
nn_getsockopt - retrieve a socket option
SYNOPSIS
--------
*#include <nanomsg/nn.h>*
*int nn_getsockopt (int 's', int 'level', int 'option', void '*optval', size_t '*optvallen');*
DESCRIPTION
-----------
Retrieves the value for the 'option'. The 'level' argument specifies
the protocol level at which the option resides. For generic socket-level options
use _NN_SOL_SOCKET_ level. For socket-type-specific options use socket type
for 'level' argument (e.g. _NN_SUB_). For transport-specific options use ID of
the transport as the 'level' argument (e.g. _NN_TCP_).
The value is stored in the buffer pointed to by 'optval' argument. Size of the
buffer is specified by the 'optvallen' argument. If the size of the option is
greater than size of the buffer, the value will be silently truncated.
Otherwise, the 'optvallen' will be modified to indicate the actual length of
the option.
_<nanomsg/nn.h>_ header defines generic socket-level options
(_NN_SOL_SOCKET_ level). The options are as follows:
*NN_LINGER*::
Specifies how long should the socket try to send pending outbound messages
after _nn_close()_ have been called, in milliseconds. Nagative value means
infinite linger. The type of the option is int. Default value
is 1000 (1 second).
*NN_SNDBUF*::
Size of the send buffer, in bytes. To prevent blocking for messages larger
than the buffer, exactly one message may be buffered in addition to the data
in the send buffer. The type of this option is int. Default value is 128kB.
*NN_RCVBUF*::
Size of the receive buffer, in bytes. To prevent blocking for messages
larger than the buffer, exactly one message may be buffered in addition
to the data in the receive buffer. The type of this option is int. Default
value is 128kB.
*NN_SNDTIMEO*::
The timeout for send operation on the socket, in milliseconds. If message
cannot be sent within the specified timeout, EAGAIN error is returned.
Negative value means infinite timeout. The type of the option is int.
Default value is -1.
*NN_RCVTIMEO*::
The timeout for recv operation on the socket, in milliseconds. If message
cannot be received within the specified timeout, EAGAIN error is returned.
Negative value means infinite timeout. The type of the option is int.
Default value is -1.
*NN_RECONNECT_IVL*::
For connection-based transports such as TCP, this option specifies how
long to wait, in milliseconds, when connection is broken before trying
to re-establish it. Note that actual reconnect interval may be randomised
to some extent to prevent severe reconnection storms. The type of the option
is int. Default value is 100 (0.1 second).
*NN_RECONNECT_IVL_MAX*::
This option is to be used only in addition to _NN_RECONNECT_IVL_ option.
It specifies maximum reconnection interval. On each reconnect attempt,
the previous interval is doubled until _NN_RECONNECT_IVL_MAX_ is reached.
Value of zero means that no exponential backoff is performed and reconnect
interval is based only on _NN_RECONNECT_IVL_. If _NN_RECONNECT_IVL_MAX_ is
less than _NN_RECONNECT_IVL_, it is ignored. The type of the option is int.
Default value is 0.
*NN_SNDPRIO*::
Retrieves outbound priority currently set on the socket. This
option has no effect on socket types that send messages to all the peers.
However, if the socket type sends each message to a single peer
(or a limited set of peers), peers with high priority take precendence
over peers with low priority. The type of the option is int. Highest
priority is 1, lowest priority is 16. Default value is 8.
*NN_RCVPRIO*::
Retrieves inbound priority currently set on the socket. Peers with high
priority take precendence over peers with low priority. The type of
the option is int. Highest priority is 1, lowest priority is 16.
Default value is 8.
RETURN VALUE
------------
If the function succeeds zero is returned. Otherwise, negative number is
returned and 'errno' is set to to one of the values defined below.
ERRORS
------
*EFAULT*::
The library is not initialised.
*EBADF*::
The provided socket is invalid.
*ENOPROTOOPT*::
The option is unknown at the level indicated.
*ETERM*::
The library is terminating.
EXAMPLE
-------
----
int linger;
size_t sz = sizeof (linger);
nn_getsockopt (s, NN_SOL_SOCKET, NN_LINGER, &linger, &sz);
----
SEE ALSO
--------
linknanomsg:nn_socket[3]
linknanomsg:nn_setsockopt[3]
linknanomsg:nanomsg[7]
AUTHORS
-------
Martin Sustrik <sustrik@250bpm.com>