Man page - nng_recv(3)

Packages contains this manual

Manual

NNG_RECV

NAME
SYNOPSIS
DESCRIPTION
RETURN VALUES
ERRORS
SEE ALSO

NAME

nng_recv - recv data

SYNOPSIS

#include <nng/nng.h>

int nng_recv(nng_socket s, void *data, size_t *sizep, int flags);

DESCRIPTION

The nng_recv() receives a message.

The flags is a bit mask that may contain any of the following values:

NNG_FLAG_NONBLOCK

The function returns immediately, even if no message is available. Without this flag, the function will wait until a message is received by the socket s , or any configured timer expires.

NNG_FLAG_ALLOC

If this flag is present, then a zero-copy mode is used. In this case the caller must set the value of data to the location of another pointer (of type void *), and the sizep pointer must be set to a location to receive the size of the message body. The function will then allocate a message buffer (as if by nng_alloc()), fill it with the message body, and store it at the address referenced by data , and update the size referenced by sizep . The caller is responsible for disposing of the received buffer either by the nng_free() function or passing the message (also with the NNG_FLAG_ALLOC flag) in a call to nng_send().

If the special flag NNG_FLAG_ALLOC (see above) is not specified, then the caller must set data to a buffer to receive the message body content, and must store the size of that buffer at the location pointed to by sizep . When the function returns, if it is successful, the size at sizep will be updated with the actual message body length copied into data .

Note

The NNG_FLAG_ALLOC flag is deprecated and may be removed in a future release. Applications should use nng_recvmsg() for zero copy performance improvements.

Note

The semantics of what receiving a message means vary from protocol to protocol, so examination of the protocol documentation is encouraged. (For example, with a req socket a message may only be received after a request has been sent, and a sub socket may only receive messages corresponding to topics to which it has subscribed.) Furthermore, some protocols may not support receiving data at all, such as pub .

RETURN VALUES

This function returns 0 on success, and non-zero otherwise.

ERRORS

NNG_EAGAIN

The operation would block, but NNG_FLAG_NONBLOCK was specified.

NNG_ECLOSED

The socket s is not open.

NNG_EINVAL

An invalid set of flags was specified.

NNG_EMSGSIZE

The received message did not fit in the size provided.

NNG_ENOMEM

Insufficient memory is available.

NNG_ENOTSUP

The protocol for socket s does not support receiving.

NNG_ESTATE

The socket s cannot receive data in this state.

NNG_ETIMEDOUT

The operation timed out.

SEE ALSO

nng_alloc(3), nng_free(3), nng_recvmsg(3), nng_send(3), nng_strerror(3), nng(7)