|
NAMEnn_getsockopt - retrieve a socket optionSYNOPSIS#include <nanomsg/nn.h>int nn_getsockopt (int s, int level, int option, void *optval, size_t *optvallen); DESCRIPTIONRetrieves 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_DOMAIN Returns the domain constant as it was passed to
nn_socket().
NN_PROTOCOL Returns the protocol constant as it was passed to
nn_socket().
NN_LINGER Specifies how long the socket should try to send pending
outbound messages after nn_close() have been called, in milliseconds.
Negative 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_RCVMAXSIZE Maximum message size that can be received, in bytes.
Negative value means that the received size is limited only by available
addressable memory. The type of this option is int. Default is 1024kB.
NN_SNDTIMEO The timeout for send operation on the socket, in
milliseconds. If message cannot be sent within the specified timeout,
ETIMEDOUT 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,
ETIMEDOUT 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 precedence 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 Sets inbound priority for endpoints subsequently added to
the socket. This option has no effect on socket types that are not able to
receive messages. When receiving a message, messages from peer with higher
priority are received before messages from peer with lower priority. The type
of the option is int. Highest priority is 1, lowest priority is 16. Default
value is 8.
NN_IPV4ONLY If set to 1, only IPv4 addresses are used. If set to 0,
both IPv4 and IPv6 addresses are used. The type of the option is int. Default
value is 1.
NN_SNDFD Retrieves a file descriptor that is readable when a
message can be sent to the socket. The descriptor should be used only for
polling and never read from or written to. The type of the option is same as
the type of file descriptor on the platform. That is, int on POSIX-complaint
platforms and SOCKET on Windows. The descriptor becomes invalid and should not
be used any more once the socket is closed. This socket option is not
available for unidirectional recv-only socket types.
NN_RCVFD Retrieves a file descriptor that is readable when a
message can be received from the socket. The descriptor should be used only
for polling and never read from or written to. The type of the option is same
as the type of file descriptor on the platform. That is, int on
POSIX-complaint platforms and SOCKET on Windows. The descriptor becomes
invalid and should not be used any more once the socket is closed. This socket
option is not available for unidirectional send-only socket types.
NN_SOCKET_NAME Socket name for error reporting and statistics. The type
of the option is string. Default value is "N" where N is socket
integer. This option is experimental, see nn_env(7) for details
NN_MAXTTL Retrieves the maximum number of "hops" a
message can go through before it is dropped. Each time the message is received
(for example via the nn_device(3) function) counts as a single hop. This
provides a form of protection against inadvertent loops.
RETURN VALUEIf the function succeeds zero is returned. Otherwise, -1 is returned and errno is set to to one of the values defined below.ERRORSEBADFThe provided socket is invalid.
ENOPROTOOPT The option is unknown at the level indicated.
ETERM The library is terminating.
EXAMPLEint linger; size_t sz = sizeof (linger); nn_getsockopt (s, NN_SOL_SOCKET, NN_LINGER, &linger, &sz); SEE ALSOnn_socket(3) nn_setsockopt(3) nanomsg(7)AUTHORSMartin Sustrik <sustrik@250bpm.com> Garrett D’Amore <garrett@damore.org>
Visit the GSP FreeBSD Man Page Interface. |