table of contents
NNG_RECV_AIO(3) | NNG Reference Manual | NNG_RECV_AIO(3) |
NAME¶
nng_recv_aio - receive message asynchronously
SYNOPSIS¶
#include <nng/nng.h> void nng_recv_aio(nng_socket s, nng_aio *aio);
DESCRIPTION¶
The nng_recv_aio() receives a message using the socket s asynchronously.
When a message is successfully received by the socket, it is stored in the aio by an internal call equivalent to nng_aio_set_msg(), then the completion callback on the aio is executed. In this case, nng_aio_result() will return zero. The callback function is responsible for retrieving the message and disposing of it appropriately.
Important
Failing to accept and dispose of messages in this
case can lead to memory leaks.
If for some reason the asynchronous receive cannot be completed successfully (including by being canceled or timing out), then the callback will still be executed, but nng_aio_result() will be non-zero.
Note
The semantics of what receiving a message means varies from
protocol to
protocol, so examination of the protocol documentation is encouraged. (For
example, with a pub socket the data is broadcast, so that any peers
who have a suitable subscription will be able to receive it using
nng_recv() or a similar function.) Furthermore, some
protocols may not support receiving (such as pub) or may require
other conditions. (For example, req sockets cannot normally receive
data, which are replies to requests, until they have first sent a
request.)
RETURN VALUES¶
None. (The operation completes asynchronously.)
ERRORS¶
NNG_ECANCELED
NNG_ECLOSED
NNG_ENOMEM
NNG_ENOTSUP
NNG_ESTATE
NNG_ETIMEDOUT
SEE ALSO¶
nng_aio_get_msg(3), nng_aio_set_msg(3), nng_msg_alloc(3), nng_strerror(3), nng_aio(5), nng_msg(5), nng_socket(5), nng(7)
2024-10-11 |