diff options
| author | Garrett D'Amore <garrett@damore.org> | 2024-10-14 18:08:13 -0700 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2024-10-14 18:08:13 -0700 |
| commit | e8d6c2bf692dbcb4c503caa676314a6a626a8a68 (patch) | |
| tree | 101c6492ad403a28b32e6a40a632924243360c90 /docs/ref/proto/respondent.md | |
| parent | 356969c4e401fe3caa48d1c1c75f51fba24ebdab (diff) | |
| download | nng-e8d6c2bf692dbcb4c503caa676314a6a626a8a68.tar.gz nng-e8d6c2bf692dbcb4c503caa676314a6a626a8a68.tar.bz2 nng-e8d6c2bf692dbcb4c503caa676314a6a626a8a68.zip | |
Converted protocols to mdbook.
Started an introductory section too.
Diffstat (limited to 'docs/ref/proto/respondent.md')
| -rw-r--r-- | docs/ref/proto/respondent.md | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/docs/ref/proto/respondent.md b/docs/ref/proto/respondent.md new file mode 100644 index 00000000..0f101550 --- /dev/null +++ b/docs/ref/proto/respondent.md @@ -0,0 +1,64 @@ +# 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. +{{footnote: 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. + +[nng_respondent_open]: TODO.md +[nng_ctx_open]: TODO.md +[nanomsg]: TODO.md +[context]: TODO.md +[raw]: TODO.md +[surveyor]: ./surveyor.md |
