summaryrefslogtreecommitdiff
path: root/docs/reference/src/proto/pull.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/reference/src/proto/pull.md')
-rw-r--r--docs/reference/src/proto/pull.md39
1 files changed, 39 insertions, 0 deletions
diff --git a/docs/reference/src/proto/pull.md b/docs/reference/src/proto/pull.md
new file mode 100644
index 00000000..5aeeb9e6
--- /dev/null
+++ b/docs/reference/src/proto/pull.md
@@ -0,0 +1,39 @@
+# PULL protocol
+
+The {{i:*PULL* protocol}}{{hi:*PULL*}} is one half of a
+{{i:pipeline pattern}}.
+The other half is the [_PUSH_][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 {{i:load-balancing}} scenarios.
+
+### Socket Operations
+
+The [`nng_pull0_open()`][nng_pull_open] functions create a
+_PULL_ 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.
+
+{{#include ../refs.md}}