diff --git a/docs/man/nng_msg_header.3.adoc b/docs/man/nng_msg_header.3.adoc deleted file mode 100644 index eac45ffdd..000000000 --- a/docs/man/nng_msg_header.3.adoc +++ /dev/null @@ -1,58 +0,0 @@ -= nng_msg_header(3) -// -// Copyright 2018 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_msg_header - return message header - -== SYNOPSIS - -[source, c] ----- -#include - -void *nng_msg_header(nng_msg *msg); ----- - -== DESCRIPTION - -The `nng_msg_header()` function returns a pointer to the start of the header -content of the message _msg_. - -NOTE: The message header contains protocol-specific header content. Most -applications should not need to access this content, but it is available -for raw mode sockets (set with the -xref:nng_options.5.adoc#NNG_OPT_RAW[`NNG_OPT_RAW`] option.) - -NOTE: The value returned by this is invalidated by a call to any of the -functions that modify the message or the header content. - -== RETURN VALUES - -Pointer to start of message header. - -== ERRORS - -None. - -== SEE ALSO - -[.text-left] -xref:nng_msg_alloc.3.adoc[nng_msg_alloc(3)], -xref:nng_msg_body.3.adoc[nng_msg_body(3)], -xref:nng_msg_free.3.adoc[nng_msg_free(3)], -xref:nng_msg_header_append.3.adoc[nng_msg_header_append(3)], -xref:nng_msg_header_chop.3.adoc[nng_msg_header_chop(3)], -xref:nng_msg_header_insert.3.adoc[nng_msg_header_insert(3)] -xref:nng_msg_header_len.3.adoc[nng_msg_header_len(3)], -xref:nng_msg_header_trim.3.adoc[nng_msg_header_trim(3)], -xref:nng_msg.5.adoc[nng_msg(5)], -xref:nng.7.adoc[nng(7)] diff --git a/docs/man/nng_msg_header_append.3.adoc b/docs/man/nng_msg_header_append.3.adoc deleted file mode 100644 index 16badf0b9..000000000 --- a/docs/man/nng_msg_header_append.3.adoc +++ /dev/null @@ -1,58 +0,0 @@ -= nng_msg_header_append(3) -// -// Copyright 2018 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_msg_header_append - append to message header - -== SYNOPSIS - -[source, c] ----- -#include - -int nng_msg_header_append(nng_msg *msg, const void *val, size_t size); -int nng_msg_header_append_u16(nng_msg *msg, uint16_t val16); -int nng_msg_header_append_u32(nng_msg *msg, uint32_t val32); -int nng_msg_header_append_u64(nng_msg *msg, uint64_t val64); ----- - -== DESCRIPTION - -The `nng_msg_header_append()` family of functions appends data to -the end of the headers of message _msg_, reallocating it if necessary. -The first function appends _size_ bytes, copying them from _val_. - -The remaining functions append the value (such as _val32_) in -network-byte order (big-endian). - - -== RETURN VALUES - -These functions return 0 on success, and non-zero otherwise. - -== ERRORS - -[horizontal] -`NNG_ENOMEM`:: Insufficient free memory exists. - -== SEE ALSO - -[.text-left] -xref:nng_msg_alloc.3.adoc[nng_msg_alloc(3)], -xref:nng_msg_header.3.adoc[nng_msg_header(3)], -xref:nng_msg_header_chop.3.adoc[nng_msg_header_chop(3)], -xref:nng_msg_header_insert.3.adoc[nng_msg_header_insert(3)], -xref:nng_msg_header_len.3.adoc[nng_msg_header_len(3)], -xref:nng_msg_header_trim.3.adoc[nng_msg_header_trim(3)], -xref:nng_msg_free.3.adoc[nng_msg_free(3)], -xref:nng_strerror.3.adoc[nng_strerror(3)], -xref:nng.7.adoc[nng(7)] diff --git a/docs/man/nng_msg_header_chop.3.adoc b/docs/man/nng_msg_header_chop.3.adoc deleted file mode 100644 index 454e9e517..000000000 --- a/docs/man/nng_msg_header_chop.3.adoc +++ /dev/null @@ -1,58 +0,0 @@ -= nng_msg_header_chop(3) -// -// Copyright 2018 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_msg_header_chop - remove data from end of message header - -== SYNOPSIS - -[source, c] ----- -#include - -int nng_msg_header_chop(nng_msg *msg, size_t size); -int nng_msg_header_chop_u16(nng_msg *msg, uint16_t *val16); -int nng_msg_header_chop_u32(nng_msg *msg, uint32_t *val32); -int nng_msg_header_chop_u64(nng_msg *msg, uint64_t *val64); ----- - -== DESCRIPTION - -The `nng_msg_header_chop()` family of functions removes -data from the end of the header of message _msg_. -The first function removes _size_ bytes. -The remaining functions remove 2, 4, or 8 bytes, and stores them in the value -(such as _val32_), -after converting them from network-byte order (big-endian) to native -byte order. - -== RETURN VALUES - -These function return 0 on success, and non-zero otherwise. - -== ERRORS - -[horizontal] -`NNG_EINVAL`:: The message header is too short to remove the requested data. - -== SEE ALSO - -[.text-left] -xref:nng_msg_alloc.3.adoc[nng_msg_alloc(3)], -xref:nng_msg_header.3.adoc[nng_msg_header(3)], -xref:nng_msg_header_append.3.adoc[nng_msg_header_append(3)], -xref:nng_msg_header_insert.3.adoc[nng_msg_header_insert(3)], -xref:nng_msg_header_len.3.adoc[nng_msg_header_len(3)], -xref:nng_msg_header_trim.3.adoc[nng_msg_header_trim(3)], -xref:nng_msg_free.3.adoc[nng_msg_free(3)], -xref:nng_strerror.3.adoc[nng_strerror(3)], -xref:nng.7.adoc[nng(7)] diff --git a/docs/man/nng_msg_header_clear.3.adoc b/docs/man/nng_msg_header_clear.3.adoc deleted file mode 100644 index d00286ed3..000000000 --- a/docs/man/nng_msg_header_clear.3.adoc +++ /dev/null @@ -1,42 +0,0 @@ -= nng_msg_header_clear(3) -// -// Copyright 2018 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_msg_header_clear - clear message header - -== SYNOPSIS - -[source, c] ----- -#include - -void nng_msg_header_clear(nng_msg *msg); ----- - -== DESCRIPTION - -The `nng_msg_clear()` function resets the header length of _msg_ to zero. - -== RETURN VALUES - -None. - -== ERRORS - -None. - -== SEE ALSO - -[.text-left] -xref:nng_msg_alloc.3.adoc[nng_msg_alloc(3)], -xref:nng_msg_free.3.adoc[nng_msg_free(3)], -xref:nng.7.adoc[nng(7)] diff --git a/docs/man/nng_msg_header_insert.3.adoc b/docs/man/nng_msg_header_insert.3.adoc deleted file mode 100644 index a2bf0d63c..000000000 --- a/docs/man/nng_msg_header_insert.3.adoc +++ /dev/null @@ -1,60 +0,0 @@ -= nng_msg_header_insert(3) -// -// Copyright 2018 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_msg_header_insert - prepend to message header - -== SYNOPSIS - -[source, c] ----- -#include - -int nng_msg_header_insert(nng_msg *msg, const void *val, size_t size); -int nng_msg_header_insert_u16(nng_msg *msg, uint16_t val16); -int nng_msg_header_insert_u32(nng_msg *msg, uint32_t val32); -int nng_msg_header_insert_u64(nng_msg *msg, uint64_t val64); ----- - -== DESCRIPTION - -The `nng_msg_header_insert()` family of functions -prepends data to the front of the headers of message _msg_, reallocating -if necessary. -The first function prepends _size_ bytes, copying them from _val_. -The remaining functions prepend the specified value (such as _val32_) in -network-byte order (big-endian). - -== RETURN VALUES - -These functions return 0 on success, and non-zero otherwise. - -== ERRORS - -[horizontal] -`NNG_ENOMEM`:: Insufficient free memory exists. - -== SEE ALSO - -[.text-left] -xref:nng_msg_alloc.3.adoc[nng_msg_alloc(3)], -xref:nng_msg_header.3.adoc[nng_msg_header(3)], -xref:nng_msg_header_append.3.adoc[nng_msg_header_append(3)], -xref:nng_msg_header_chop.3.adoc[nng_msg_header_chop(3)], -xref:nng_msg_header_len.3.adoc[nng_msg_header_len(3)], -xref:nng_msg_header_trim.3.adoc[nng_msg_header_trim(3)], -xref:nng_msg_free.3.adoc[nng_msg_free(3)], -xref:nng_msg_capacity.3.adoc[nng_msg_capacity(3)], -xref:nng_msg_reserve.3.adoc[nng_msg_reserve(3)], -xref:nng_msg_realloc.3.adoc[nng_msg_realloc(3)], -xref:nng_strerror.3.adoc[nng_strerror(3)], -xref:nng.7.adoc[nng(7)] diff --git a/docs/man/nng_msg_header_len.3.adoc b/docs/man/nng_msg_header_len.3.adoc deleted file mode 100644 index 0a7b3613a..000000000 --- a/docs/man/nng_msg_header_len.3.adoc +++ /dev/null @@ -1,43 +0,0 @@ -= nng_msg_header_len(3) -// -// Copyright 2018 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_msg_header_len - return message header length - -== SYNOPSIS - -[source, c] ----- -#include - -size_t nng_msg_header_len(nng_msg *msg); ----- - -== DESCRIPTION - -The `nng_msg_header_len()` returns the length of message header of _msg_. - -== RETURN VALUES - -Length of message header. - -== ERRORS - -None. - -== SEE ALSO - -[.text-left] -xref:nng_msg_alloc.3.adoc[nng_msg_alloc(3)], -xref:nng_msg_header.3.adoc[nng_msg_header(3)], -xref:nng_msg.5.adoc[nng_msg(5)], -xref:nng.7.adoc[nng(7)] diff --git a/docs/man/nng_msg_header_trim.3.adoc b/docs/man/nng_msg_header_trim.3.adoc deleted file mode 100644 index 6df504ffd..000000000 --- a/docs/man/nng_msg_header_trim.3.adoc +++ /dev/null @@ -1,59 +0,0 @@ -= nng_msg_header_trim(3) -// -// Copyright 2018 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_msg_header_trim - remove data from start of message header - -== SYNOPSIS - -[source, c] ----- -#include - -int nng_msg_header_trim(nng_msg *msg, size_t size); -int nng_msg_header_trim_u16(nng_msg *msg, uint16_t *val16); -int nng_msg_header_trim_u32(nng_msg *msg, uint32_t *val32); -int nng_msg_header_trim_u64(nng_msg *msg, uint64_t *val64); ----- - -== DESCRIPTION - -The `nng_msg_header_trim()` family of functions remove -data from the start of the header of message _msg_. -The first function removes _size_ bytes. -The remaining functions removes 2, 4, or 8 bytes, and stores them in the -value (such as _val32_), -after converting them from network-byte order (big-endian) to native -byte order. - -== RETURN VALUES - -This function returns 0 on success, and non-zero otherwise. - -== ERRORS - -[horizontal] -`NNG_EINVAL`:: The message header is too short to remove the requested data. - -== SEE ALSO - -[.text-left] -xref:nng_msg_alloc.3.adoc[nng_msg_alloc(3)], -xref:nng_msg_header.3.adoc[nng_msg_header(3)], -xref:nng_msg_header_append.3.adoc[nng_msg_header_append(3)], -xref:nng_msg_header_chop.3.adoc[nng_msg_header_chop(3)], -xref:nng_msg_header_insert.3.adoc[nng_msg_header_insert(3)], -xref:nng_msg_header_len.3.adoc[nng_msg_header_len(3)], -xref:nng_msg_free.3.adoc[nng_msg_free(3)], -xref:nng_strerror.3.adoc[nng_strerror(3)], -xref:nng_msg.5.adoc[nng_msg(5)], -xref:nng.7.adoc[nng(7)] diff --git a/docs/ref/SUMMARY.md b/docs/ref/SUMMARY.md index 0415cad83..596144934 100644 --- a/docs/ref/SUMMARY.md +++ b/docs/ref/SUMMARY.md @@ -6,6 +6,7 @@ - [nng_msg](./api/msg/nng_msg.md) - [nng_msg_body](./api/msg/nng_msg_body.md) + - [nng_msg_header](./api/msg/nng_msg_header.md) - [Threading and Synchronization](./api/thr/index.md) diff --git a/docs/ref/api/msg/nng_msg_body.md b/docs/ref/api/msg/nng_msg_body.md index ff78e8528..2942738a2 100644 --- a/docs/ref/api/msg/nng_msg_body.md +++ b/docs/ref/api/msg/nng_msg_body.md @@ -94,7 +94,7 @@ end of the message body. ## RETURN VALUES The `nng_msg_body` function returns a pointer to the start of the message body. -The `nng_msg_len` function returns the length of the message in bytes. +The `nng_msg_len` function returns the length of the message body in bytes. The `nng_msg_clear` function does not return anything. The remaining functions return zero on success, or a non-zero error value on failure. diff --git a/docs/ref/api/msg/nng_msg_header.md b/docs/ref/api/msg/nng_msg_header.md new file mode 100644 index 000000000..7c25347c3 --- /dev/null +++ b/docs/ref/api/msg/nng_msg_header.md @@ -0,0 +1,94 @@ +# nng_msg_header + +## NAME + +nng_msg_header --- message header + +## SYNOPSIS + +```c +#include + +void *nng_msg_header(nng_msg *msg); +size_t nng_msg_header_len(nng_msg *msg); +void nng_msg_header_clear(nng_msg *msg); +int nng_msg_header_append(nng_msg *msg, const void *val, size_t size); +int nng_msg_header_append_u16(nng_msg *msg, uint16_t val16); +int nng_msg_header_append_u32(nng_msg *msg, uint32_t val32); +int nng_msg_header_append_u64(nng_msg *msg, uint64_t val64); +int nng_msg_header_insert(nng_msg *msg, const void *val, size_t size); +int nng_msg_header_insert_u16(nng_msg *msg, uint16_t val16); +int nng_msg_header_insert_u32(nng_msg *msg, uint32_t val32); +int nng_msg_header_insert_u64(nng_msg *msg, uint64_t val64); +int nng_msg_header_chop(nng_msg *msg, size_t size); +int nng_msg_header_chop_u16(nng_msg *msg, uint16_t *val16); +int nng_msg_header_chop_u32(nng_msg *msg, uint32_t *val32); +int nng_msg_header_chop_u64(nng_msg *msg, uint64_t *val64); +int nng_msg_header_trim(nng_msg *msg, size_t size); +int nng_msg_header_trim_u16(nng_msg *msg, uint16_t *val16); +int nng_msg_header_trim_u32(nng_msg *msg, uint32_t *val32); +int nng_msg_header_trim_u64(nng_msg *msg, uint64_t *val64); +``` + +## DESCRIPTION + +The {{i:header}} of a message contains protocol and transport-specific +header content. +Typically there is only a very limited amount of data stored in the message +headers, in order to allow more room for the message body data. Headers +should be considered overhead in the protocols where they appear. + +> [!TIP] +> Most applications should not need to access the message header content +> directly, unless they ar working with [raw mode][raw] sockets. + +The `nng_msg_header` function returns a pointer to the start of the header +content of the message _msg_. + +> [!NOTE] +> The value returned by this is invalidated by a call to any of the +> functions that modify the message or the header content. + +### Clearing the Message Header + +The message headers can be entirely cleared using {{i:`nng_msg_header_clear`}}. +The underlying buffers are left intact, and the bytes may remain at their original values, so +this function should not be relied upon for zeroizing sensitive data. + +### Appending and Inserting Data + +Appending data to a message header is done by using the {{i:`nng_msg_header_append`}} functions, +and inserting data in the header is done using the {{i:`nng_msg_header_insert`}} functions. + +These functions act just like the [`nng_msg_append`][nng_msg_body] and [`nng_msg_insert`][nng_msg_body] +functions, except that they operate on the message header rather than the message body. + +### Consuming Data + +The {{i:`nng_msg_header_trim`}} functions remove data from the beginning of the message header, +and the {{i:`nng_msg_header_chop`}} functions remove data from the end of the message header. + +These functions act just like the [`nng_msg_trim`][nng_msg_body] and [`nng_msg_chop`][nng_msg_body] +functions, except that they operate the message header rather than the message body. + +## RETURN VALUES + +The `nng_msg_header` function returns a pointer to the start of the message header. +The `nng_msg_header_len` function returns the length of the message header in bytes. +The `nng_msg_header_clear` function does not return anything. +The remaining functions return zero on success, or a non-zero error value on failure. + +## ERRORS + +- `NNG_ENOMEM`: Insufficient memory exists to grow the message. +- `NNG_EINVAL`: The message body is too short to remove the requested data. + +## SEE ALSO + +[nng_msg][nng_msg], +[nng_msg_body][nng_msg_body], +[raw mode][raw] + +[nng_msg]: ./nng_msg.md +[nng_msg_body]: ./nng_msg_body.md +[raw]: TODO.md