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/ref/api/ctx.md | 10 +++++++--- docs/ref/api/sock.md | 41 +++++++++++++++++++++++++++++++++++++++++ docs/ref/xref.md | 23 +++++++++++++++++------ 3 files changed, 65 insertions(+), 9 deletions(-) (limited to 'docs/ref') 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