aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2025-01-01 23:38:22 -0800
committerGarrett D'Amore <garrett@damore.org>2025-01-01 23:38:22 -0800
commit61c886e86de03f89e0c6c1769171576482bf4245 (patch)
treecb5e8604458351a1b247443d2cdb0d0f2715293c
parent0df5725fbd53cf67711f0f73a138fc6858ab6740 (diff)
downloadnng-61c886e86de03f89e0c6c1769171576482bf4245.tar.gz
nng-61c886e86de03f89e0c6c1769171576482bf4245.tar.bz2
nng-61c886e86de03f89e0c6c1769171576482bf4245.zip
docs: convert socket options to mdbook
-rw-r--r--docs/man/libnng.3.adoc12
-rw-r--r--docs/man/nng_socket_get.3.adoc105
-rw-r--r--docs/man/nng_socket_set.3.adoc92
-rw-r--r--docs/ref/api/ctx.md10
-rw-r--r--docs/ref/api/sock.md41
-rw-r--r--docs/ref/xref.md23
6 files changed, 65 insertions, 218 deletions
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. <info@staysail.tech>
-// Copyright 2018 Capitar IT Group BV <info@capitar.com>
-//
-// 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 <nng/nng.h>
-
-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. <info@staysail.tech>
-// Copyright 2018 Capitar IT Group BV <info@capitar.com>
-//
-// 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 <nng/nng.h>
-
-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`<a name="NNG_OPT_RECVBUF"></a> | `int` | Maximum number of messages to buffer locally when receiving. |
+| `NNG_OPT_SENDBUF`<a name="NNG_OPT_SENDBUF"></a> | `int` | Maximum number of messages to buffer when sending messages. |
+| `NNG_OPT_RECVMAXSZ`<a name="NNG_OPT_RECVMAXSZ"></a> | `size_t` | Maximum message size acceptable for receiving. Can be tuned independently on [dialers][dialer] and [listeners][listener]. |
+| `NNG_OPT_RECVTIMEO`<a name="NNG_OPT_RECVTIMEO"></a> | `nng_duration` | Default timeout (ms) for receiving messages. |
+| `NNG_OPT_SENDTIMEO`<a name="NNG_OPT_SENDTIMEO"></a> | `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