From 61c886e86de03f89e0c6c1769171576482bf4245 Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Wed, 1 Jan 2025 23:38:22 -0800 Subject: docs: convert socket options to mdbook --- docs/man/libnng.3.adoc | 12 ----- docs/man/nng_socket_get.3.adoc | 105 ----------------------------------------- docs/man/nng_socket_set.3.adoc | 92 ------------------------------------ docs/ref/api/ctx.md | 10 ++-- docs/ref/api/sock.md | 41 ++++++++++++++++ docs/ref/xref.md | 23 ++++++--- 6 files changed, 65 insertions(+), 218 deletions(-) delete mode 100644 docs/man/nng_socket_get.3.adoc delete mode 100644 docs/man/nng_socket_set.3.adoc (limited to 'docs') diff --git a/docs/man/libnng.3.adoc b/docs/man/libnng.3.adoc index 36560102..f6366942 100644 --- a/docs/man/libnng.3.adoc +++ b/docs/man/libnng.3.adoc @@ -15,18 +15,6 @@ libnng - nanomsg next generation library - -=== Socket Functions - -The following functions operate on sockets. - -|=== -|xref:nng_dial.3.adoc[nng_dial()]|create and start dialer -|xref:nng_listen.3.adoc[nng_listen()]|create and start listener -|xref:nng_socket_get.3.adoc[nng_socket_get()]|get socket option -|xref:nng_socket_set.3.adoc[nng_socket_set()]|set socket option -|=== - === Connection Management The following functions are used with either listeners, or dialers. diff --git a/docs/man/nng_socket_get.3.adoc b/docs/man/nng_socket_get.3.adoc deleted file mode 100644 index bda37836..00000000 --- a/docs/man/nng_socket_get.3.adoc +++ /dev/null @@ -1,105 +0,0 @@ -= nng_socket_get(3) -// -// Copyright 2024 Staysail Systems, Inc. -// Copyright 2018 Capitar IT Group BV -// -// This document is supplied under the terms of the MIT License, a -// copy of which should be located in the distribution where this -// file was obtained (LICENSE.txt). A copy of the license may also be -// found online at https://opensource.org/licenses/MIT. -// - -== NAME - -nng_socket_get - get socket option - -== SYNOPSIS - -[source, c] ----- -#include - -int nng_socket_get_bool(nng_socket s, const char *opt, bool *bvalp); - -int nng_socket_get_int(nng_socket s, const char *opt, int *ivalp); - -int nng_socket_get_size(nng_socket s, const char *opt, size_t *zp); - -int nng_socket_get_uint64(nng_socket s, const char *opt, uint64_t *u64p); - -int nng_socket_get_ms(nng_socket s, const char *opt, nng_duration *durp); - -int nng_socket_get_addr(nng_socket s, const char *opt, nng_sockaddr *addrp); - ----- - -== DESCRIPTION - -(((options, socket))) -The `nng_socket_get` functions are used to retrieve option values for -the xref:nng_socket.5.adoc[socket] _s_. -The actual options that may be retrieved in this way vary. -A number of them are documented in xref:nng_options.5.adoc[nng_options(5)]. - -Additionally protocol-specific options are documented with the protocols themselves. - -=== Forms - -In all of these forms, the option _opt_ is retrieved from the socket _s_. -The forms vary based on the type of the option they take. - -The details of the type, size, and semantics of the option will depend -on the actual option, and will be documented with the option itself. - -`nng_socket_get_bool()`:: -This function is for options which take a Boolean (`bool`). -The value will be stored at _bvalp_. - -`nng_socket_get_int()`:: -This function is for options which take an integer (`int`). -The value will be stored at _ivalp_. - -`nng_socket_get_ms()`:: -This function is used to retrieve time xref:nng_duration.5.adoc[durations] -(such as timeouts), stored in _durp_ as a number of milliseconds. -(The special value ((`NNG_DURATION_INFINITE`)) means an infinite amount of time, and -the special value ((`NNG_DURATION_DEFAULT`)) means a context-specific default.) - -`nng_socket_get_size()`:: -This function is used to retrieve a size into the pointer _zp_, -typically for buffer sizes, message maximum sizes, and similar options. - -`nng_socket_get_uint64()`:: -This function is used to retrieve a 64-bit unsigned value into the value -referenced by _u64p_. -This is typically used for options related to identifiers, network -numbers, and similar. - -== RETURN VALUES - -These functions return 0 on success, and non-zero otherwise. - -== ERRORS - -[horizontal] -`NNG_EBADTYPE`:: Incorrect type for option. -`NNG_ECLOSED`:: Parameter _s_ does not refer to an open socket. -`NNG_EINVAL`:: Size of destination _val_ too small for object. -`NNG_ENOMEM`:: Insufficient memory exists. -`NNG_ENOTSUP`:: The option _opt_ is not supported. -`NNG_EWRITEONLY`:: The option _opt_ is write-only. - -== SEE ALSO - -[.text-left] -xref:nng_dialer_get.3.adoc[nng_dialer_get(3)], -xref:nng_listener_get.3.adoc[nng_listener_get(3)], -xref:nng_pipe_get.3.adoc[nng_pipe_get(3)], -xref:nng_socket_set.3.adoc[nng_socket_set(3)], -xref:nng_strdup.3.adoc[nng_strdup(3)], -xref:nng_strerror.3.adoc[nng_strerror(3)], -xref:nng_strfree.3.adoc[nng_strfree(3)], -xref:nng_duration.5.adoc[nng_duration(5)], -xref:nng_options.5.adoc[nng_options(5)], -xref:nng_socket.5.adoc[nng_socket(5)], -xref:nng.7.adoc[nng(7)] diff --git a/docs/man/nng_socket_set.3.adoc b/docs/man/nng_socket_set.3.adoc deleted file mode 100644 index 897e9124..00000000 --- a/docs/man/nng_socket_set.3.adoc +++ /dev/null @@ -1,92 +0,0 @@ -= nng_socket_set(3) -// -// Copyright 2024 Staysail Systems, Inc. -// Copyright 2018 Capitar IT Group BV -// -// This document is supplied under the terms of the MIT License, a -// copy of which should be located in the distribution where this -// file was obtained (LICENSE.txt). A copy of the license may also be -// found online at https://opensource.org/licenses/MIT. -// - -== NAME - -nng_socket_set - set socket option - -== SYNOPSIS - -[source, c] ----- -#include - -int nng_socket_set_bool(nng_socket s, const char *opt, bool bval); - -int nng_socket_set_int(nng_socket s, const char *opt, int ival); - -int nng_socket_set_ms(nng_socket s, const char *opt, nng_duration dur); - -int nng_socket_set_size(nng_socket s, const char *opt, size_t z); - -int nng_socket_set_uint64(nng_socket s, const char *opt, uint64_t u64); ----- - -== DESCRIPTION -(((options, socket))) -The `nng_socket_set` functions are used to configure options for -the socket _s_. -The actual options that may be configured in this way vary, and are -specified by _opt_. -A number of them are documented in xref:nng_options.5.adoc[nng_options(5)]. - -Protocol-specific options are documented with the protocol in question. - -=== Forms - -The details of the type, size, and semantics of the option will depend -on the actual option, and is documented with the option itself. - -`nng_socket_set_bool()`:: -This function is for options which take a Boolean (`bool`). -The _bval_ is passed to the option. - -`nng_socket_set_int()`:: -This function is for options which take an integer (`int`). -The _ival_ is passed to the option. - -`nng_socket_set_ms()`:: -This function is used to configure time durations (such as timeouts) using -type xref:nng_duration.5.adoc[`nng_duration`]. -The duration _dur_ is an integer number of milliseconds. - -`nng_socket_set_size()`:: -This function is used to configure a size, _z_, typically for buffer sizes, -message maximum sizes, and similar options. - -`nng_socket_set_uint64()`:: -This function is used to configure a 64-bit unsigned value, _u64_. -This is typically used for options related to identifiers, network numbers, -and similar. - -== RETURN VALUES - -These functions return 0 on success, and non-zero otherwise. - -== ERRORS - -[horizontal] -`NNG_ECLOSED`:: Parameter _s_ does not refer to an open socket. -`NNG_EINVAL`:: The value being passed is invalid. -`NNG_ENOTSUP`:: The option _opt_ is not supported. -`NNG_EREADONLY`:: The option _opt_ is read-only. -`NNG_ESTATE`:: The socket is in an inappropriate state for setting this option. - -== SEE ALSO - -[.text-left] -xref:nng_socket_get.3.adoc[nng_socket_get(3)], -xref:nng_dialer_set.3.adoc[nng_dialer_set(3)], -xref:nng_listener_set.3.adoc[nng_listener_set(3)], -xref:nng_strerror.3.adoc[nng_strerror(3)], -xref:nng_options.5.adoc[nng_options(5)], -xref:nng_socket.5.adoc[nng_socket(5)], -xref:nng.7.adoc[nng(7)] diff --git a/docs/ref/api/ctx.md b/docs/ref/api/ctx.md index 75d1198c..43d79621 100644 --- a/docs/ref/api/ctx.md +++ b/docs/ref/api/ctx.md @@ -180,12 +180,16 @@ int nng_ctx_set_size(nng_ctx ctx, const char *opt, size_t val); int nng_ctx_set_uint64(nng_ctx ctx, const char *opt, uint64_t val); ``` +Some protocols support certain options that affect the behavior of a specific context. +For example, most protocols will let you set the defaults timeouts associated with +send or receive separately for different contexts. + These functions are used to retrieve or change the value of an option named _opt_ from the context _ctx_. -The `nng_ctx_get_` functions retrieve the value, and store it in the location _valp_ references. +The `nng_ctx_get_` functions retrieve the value from _ctx_, and store it in the location _valp_ references. The `nng_ctx_set_` functions change the value for the _ctx_, taking it from _val_. -These functions access an option as a specific type. The protocol will have details about which options -are available for contexts, and which type they may be accessed using. +These functions access an option as a specific type. The protocol documentation will have details about which options +are available for contexts, whether they can be read or written, and which type they may be accessed using. ## Examples diff --git a/docs/ref/api/sock.md b/docs/ref/api/sock.md index ec6b20e1..88242721 100644 --- a/docs/ref/api/sock.md +++ b/docs/ref/api/sock.md @@ -271,6 +271,47 @@ On success, the received message can be retrieved from the _aio_ using the [`nng > steps on the part of the application, the lowest latencies and highest performance will be achieved by using > this function instead of [`nng_recv`] or [`nng_recvmsg`]. +## Socket Options + +```c +int nng_socket_get_bool(nng_socket s, const char *opt, bool *valp); +int nng_socket_get_int(nng_socket s, const char *opt, int *valp); +int nng_socket_get_ms(nng_socket s, const char *opt, nng_duration *valp); +int nng_socket_get_size(nng_socket s, const char *opt, size_t *valp); +int nng_socket_get_uint64(nng_socket s, const char *opt, uint64_t *valp); + +int nng_socket_set_bool(nng_socket s, const char *opt, int val); +int nng_socket_set_int(nng_socket s, const char *opt, int val); +int nng_socket_set_ms(nng_socket s, const char *opt, nng_duration val); +int nng_socket_set_size(nng_socket s, const char *opt, size_t val); +int nng_socket_set_uint64(nng_socket s, const char *opt, uint64_t val); +``` + +Protocols usually have protocol specific behaviors that can be adjusted via options. + +These functions are used to retrieve or change the value of an option named _opt_ from the context _ctx_. +The `nng_socket_get_` functions retrieve the value from the socket _s_, and store it in the location _valp_ references. +The `nng_socket_set_` functions change the value for the socket _s_, taking it from _val_. + +These functions access an option as a specific type. The protocol documentation will have details about which options +are available, whether they can be read or written, and the appropriate type to use. + +> [!NOTE] +> Socket options are are used to tune the behavior of the higher level protocol. To change the options +> for an underlying transport, the option should be set on the [dialer] or [listener] instead of the [socket]. + +### Common Options + +The following options are available for many protocols, and always use the same types and semantics described below. + +| Option | Type | Description | +| --------------------------------------------------- | -------------- | ------------------------------------------------------------------------------------------------------------------------- | +| `NNG_OPT_RECVBUF` | `int` | Maximum number of messages to buffer locally when receiving. | +| `NNG_OPT_SENDBUF` | `int` | Maximum number of messages to buffer when sending messages. | +| `NNG_OPT_RECVMAXSZ` | `size_t` | Maximum message size acceptable for receiving. Can be tuned independently on [dialers][dialer] and [listeners][listener]. | +| `NNG_OPT_RECVTIMEO` | `nng_duration` | Default timeout (ms) for receiving messages. | +| `NNG_OPT_SENDTIMEO` | `nng_duration` | Default timeout (ms) for sending messages. | + ## Polling Socket Events ```c diff --git a/docs/ref/xref.md b/docs/ref/xref.md index 16d9938c..cfc9cbc3 100644 --- a/docs/ref/xref.md +++ b/docs/ref/xref.md @@ -220,8 +220,18 @@ [`nng_listen`]: /TODO.md [`nng_listener_create`]: /TODO.md [`nng_listener_close`]: /TODO.md -[`nng_socket_set`]: /TODO.md -[`nng_socket_get`]: /TODO.md +[`nng_socket_set`]: /api/sock.md#socket-options +[`nng_socket_set_bool`]: /api/sock.md#socket-options +[`nng_socket_set_int`]: /api/sock.md#socket-options +[`nng_socket_set_ms`]: /api/sock.md#socket-options +[`nng_socket_set_size`]: /api/sock.md#socket-options +[`nng_socket_set_uint64`]: /api/sock.md#socket-options +[`nng_socket_get`]: /api/sock.md#socket-options +[`nng_socket_get_bool`]: /api/sock.md#socket-options +[`nng_socket_get_int`]: /api/sock.md#socket-options +[`nng_socket_get_ms`]: /api/sock.md#socket-options +[`nng_socket_get_size`]: /api/sock.md#socket-options +[`nng_socket_get_uint64`]: /api/sock.md#socket-options [`nng_send`]: /api/sock.md#nng_send [`nng_sendmsg`]: /api/sock.md#nng_sendmsg [`nng_send_aio`]: /api/sock.md#nng_send_aio @@ -295,10 +305,11 @@ [`NNG_OPT_MAXTTL`]: /TODO.md [`NNG_OPT_RECONNMAXT`]: /TODO.md [`NNG_OPT_RECONNMINT`]: /TODO.md -[`NNG_OPT_SENDTIMEO`]: /TODO.md -[`NNG_OPT_RECVTIMEO`]: /TODO.md -[`NNG_OPT_SENDBUF`]: /TODO.md -[`NNG_OPT_RECVBUF`]: /TODO.md +[`NNG_OPT_SENDTIMEO`]: /api/sock.md#NNG_OPT_SENDTIMEO +[`NNG_OPT_RECVTIMEO`]: /api/sock.md#NNG_OPT_RECVTIMEO +[`NNG_OPT_SENDBUF`]: /api/sock.md#NNG_OPT_SENDBUF +[`NNG_OPT_RECVBUF`]: /api/sock.md#NNG_OPT_RECVBUF +[`NNG_OPT_RECVMAXSZ`]: /api/sock.md#NNG_OPT_RECVMAXSZ [`NNG_SOCKET_INITIALIZER`]: /api/sock.md#socket-structure [`NNG_CTX_INITIALIZER`]: /api/ctx.md#context-structure -- cgit v1.2.3-70-g09d2