summaryrefslogtreecommitdiff
path: root/docs/reference/src/ctx/nng_ctx_recvmsg.md
blob: 028ad9e6b6a308404ab3f7467bcee6f376673bd7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# nng_ctx_recvmsg

## NAME

nng_ctx_recvmsg --- receive message using socket

## SYNOPSIS

```c
#include <nng/nng.h>

int nng_ctx_recvmsg(nng_ctx ctx, nng_msg **msgp, int flags);
```

## DESCRIPTION

The `nng_ctx_recvmsg()` receives a message on [context][context] _ctx_, storing the
received [message][msg] at the location pointed to by _msgp_.

The _flags_ may contain the following value:

- {{i:`NNG_FLAG_NONBLOCK`}}:\
  The function returns immediately, even if no message is available.
  Without this flag, the function will wait until a message is receivable
  on the context _ctx_, or any configured timer expires.

> [!TIP]
> The semantics of what receiving a message means vary from protocol to
> protocol, so examination of the protocol documentation is encouraged.

## 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 context or socket is not open.
- `NNG_EINVAL`: An invalid set of _flags_ was specified.
- `NNG_ENOMEM`: Insufficient memory is available.
- `NNG_ENOTSUP`: The protocol does not support receiving.
- `NNG_ESTATE`: The context cannot receive data in this state.
- `NNG_ETIMEDOUT`: The operation timed out.

## SEE ALSO

[nng_msg_free][nng_msg_free],
[nng_ctx_open][nng_ctx_open],
[nng_ctx_recv][nng_ctx_recv],
[nng_ctx_sendmsg][nng_ctx_sendmsg],
[Messages][msg]

{{#include ../refs.md}}