summaryrefslogtreecommitdiff
path: root/docs/reference/src/proto/respondent.md
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2024-03-30 14:36:35 -0700
committerGarrett D'Amore <garrett@damore.org>2024-03-30 14:36:35 -0700
commitd38c90f0b429df3c13fb13f87481b73465d2eae5 (patch)
tree29b19caf79f82f9de3268333ceb8ffb3a45e973a /docs/reference/src/proto/respondent.md
parentf1a8d00adad337d7e7ef24b936a3f046f80370dd (diff)
downloadnng-d38c90f0b429df3c13fb13f87481b73465d2eae5.tar.gz
nng-d38c90f0b429df3c13fb13f87481b73465d2eae5.tar.bz2
nng-d38c90f0b429df3c13fb13f87481b73465d2eae5.zip
Reorganization in progress.
Diffstat (limited to 'docs/reference/src/proto/respondent.md')
-rw-r--r--docs/reference/src/proto/respondent.md62
1 files changed, 62 insertions, 0 deletions
diff --git a/docs/reference/src/proto/respondent.md b/docs/reference/src/proto/respondent.md
new file mode 100644
index 00000000..e3f14eba
--- /dev/null
+++ b/docs/reference/src/proto/respondent.md
@@ -0,0 +1,62 @@
+# RESPONDENT protocol
+
+The {{i:*RESPONDENT* protocol}}{{hi:*RESPONDENT*}} is one half of a {{i:survey pattern}}.
+In this pattern, a surveyor sends a survey, which is broadcast to all
+peer respondents.
+The respondents then have a chance to reply (but are not obliged to reply).
+The survey itself is a timed event, so that responses
+received after the survey has finished are discarded.
+
+> [!TIP]
+> This protocol is useful in solving voting problems, such as leader
+> election in cluster configurations, as well as certain kinds of service
+> discovery problems.
+
+The _RESPONDENT_ protocol is the respondent side, and the
+[_SURVEYOR_][surveyor] protocol is the surveyor side.
+
+### Socket Operations
+
+The [`nng_respondent0_open()`][nng_respondent_open] functions create a
+respondent socket.
+This socket may be used to receive messages, and then to send replies.
+A reply can only be sent after receiving a survey, and generally the
+reply will be sent to surveyor from whom the last survey was received.
+
+Respondents may discard a survey by simply not replying to it.
+
+[Raw mode][raw] sockets ignore all these restrictions.
+
+### Context Operations
+
+This protocol supports the creation of [contexts][context] for concurrent
+use cases using [`nng_ctx_open()`][nng_ctx_open].
+
+Incoming surveys will be routed to and received by only one context.
+Additional surveys may be received by other contexts in parallel.
+Replies made using a context will be returned to the the surveyor that
+issued the survey most recently received by that context.
+The restrictions for order of operations with sockets apply equally
+well for contexts, except that each context will be treated as if it were
+a separate socket.
+
+### Protocol Versions
+
+Only version 0 of this protocol is supported.
+At the time of writing, no other versions of this protocol have been defined. [^1]
+
+[^1]:
+ An earlier and incompatible version of the protocol was used in older
+ pre-releases of [nanomsg][nanomsg], but was not released in any
+ production version.
+
+### Protocol Options
+
+The _respondent_ protocol has no protocol-specific options.
+
+### Protocol Headers
+
+The _RESPONDENT_ protocol uses a {{ii:backtrace}} in the header.
+This is more fully documented in the [_SURVEYOR_][surveyor] manual.
+
+{{#include ../refs.md}}