---
name: "nng_pull"
section: "7"
platform: "linux"
package: "libnng-dev"
version: "1.10.1-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/nng_pull"
---

# nng\_pull(7)

pull protocol

## NAME

nng\_pull - pull protocol

## SYNOPSIS

```
#include <nng/protocol/pipeline0/pull.h>
```

## DESCRIPTION

The *pull* protocol is one half of a pipeline pattern. The other half is the *push* protocol.

In the pipeline pattern, pushers distribute messages to pullers. Each message sent by a pusher will be sent to one of its peer pullers, chosen in a round-robin fashion from the set of connected peers available for receiving. This property makes this pattern useful in load-balancing scenarios.

### Socket Operations

The `nng_pull0_open()` functions create a puller socket. This socket may be used to receive messages, but is unable to send them. Attempts to send messages will result in `NNG_ENOTSUP`.

When receiving messages, the *pull* protocol accepts messages as they arrive from peers. If two peers both have a message ready, the order in which messages are handled is undefined.

### Protocol Versions

Only version 0 of this protocol is supported. (At the time of writing, no other versions of this protocol have been defined.)

### Protocol Options

The *pull* protocol has no protocol-specific options.

### Protocol Headers

The *pull* protocol has no protocol-specific headers.

## SEE ALSO

[nng\_pull\_open(3)](/nng_pull_open/3.md), [nng\_push(7)](/nng_push/7.md), [nng(7)](/nng/7.md),
