92 lines
3 KiB
Text
92 lines
3 KiB
Text
|
= nng_respondent(7)
|
||
|
//
|
||
|
// Copyright 2018 Staysail Systems, Inc. <info@staysail.tech>
|
||
|
// Copyright 2018 Capitar IT Group BV <info@capitar.com>
|
||
|
//
|
||
|
// This document is supplied under the terms of the MIT License, a
|
||
|
// copy of which should be located in the distribution where this
|
||
|
// file was obtained (LICENSE.txt). A copy of the license may also be
|
||
|
// found online at https://opensource.org/licenses/MIT.
|
||
|
//
|
||
|
|
||
|
== NAME
|
||
|
|
||
|
nng_respondent - respondent protocol
|
||
|
|
||
|
== SYNOPSIS
|
||
|
|
||
|
[source,c]
|
||
|
----
|
||
|
#include <nng/protocol/survey0/respond.h>
|
||
|
----
|
||
|
|
||
|
== DESCRIPTION
|
||
|
|
||
|
(((protocol, _respondent_)))
|
||
|
The ((_respondent_ protocol)) is one half of a ((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
|
||
|
xref:nng_surveyor.7.adoc[_surveyor_] protocol is the surveyor side.
|
||
|
|
||
|
=== Socket Operations
|
||
|
|
||
|
The xref:nng_respondent_open.3.adoc[`nng_respondent0_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 sockets (set with xref:nng_options.5.adoc#NNG_OPT_RAW[`NNG_OPT_RAW`])
|
||
|
ignore all these restrictions.
|
||
|
|
||
|
=== Context Operations
|
||
|
|
||
|
This protocol supports the creation of xref:nng_ctx.5.adoc[contexts] for concurrent
|
||
|
use cases using xref:nng_ctx_open.3.adoc[`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.
|
||
|
An earlier and incompatible version of the protocol was used in older
|
||
|
pre-releases of http://nanomsg.org[nanomsg], but was not released in any
|
||
|
production version.)
|
||
|
|
||
|
=== Protocol Options
|
||
|
|
||
|
The _respondent_ protocol has no protocol-specific options.
|
||
|
|
||
|
=== Protocol Headers
|
||
|
|
||
|
(((backtrace)))
|
||
|
The _respondent_ protocol uses a _backtrace_ in the header.
|
||
|
This is more fully documented in the xref:nng_surveyor.7.adoc[_surveyor_] manual.
|
||
|
|
||
|
// TODO: Insert reference to RFC.
|
||
|
|
||
|
== SEE ALSO
|
||
|
|
||
|
[.text-left]
|
||
|
xref:nng_respondent_open.3.adoc[nng_respondent_open(3)],
|
||
|
xref:nng_surveyor.7.adoc[nng_surveyor(7)],
|
||
|
xref:nng.7.adoc[nng(7)]
|