summaryrefslogtreecommitdiff
path: root/man/tip/nng_respondent.7.html
blob: d20b33204e0e9fa073b5da2dd13c44bd10f11d76 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
---
version: tip
layout: manpage_v2
title: nng_respondent(7)
---
<h1>nng_respondent(7)</h1>
<div class="sect1">
<h2 id="_name">NAME</h2>
<div class="sectionbody">
<div class="paragraph">
<p>nng_respondent - respondent protocol</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="listingblock">
<div class="content">
<pre class="pygments highlight"><code data-lang="c"><span></span><span class="tok-cp">#include</span><span class="tok-w"> </span><span class="tok-cpf">&lt;nng/protocol/survey0/respond.h&gt;</span></code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph">
<p>
The <em>respondent</em> 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.</p>
</div>
<div class="admonitionblock tip">
<table>
<tr>
<td class="icon">
<i class="fa icon-tip" title="Tip"></i>
</td>
<td class="content">
This protocol is useful in solving voting problems, such as leader
election in cluster configurations, as well as certain kinds of service
discovery problems.
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>The <em>respondent</em> protocol is the respondent side, and the
<a href="nng_surveyor.7.html"><em>surveyor</em></a> protocol is the surveyor side.</p>
</div>
<div class="sect2">
<h3 id="_socket_operations">Socket Operations</h3>
<div class="paragraph">
<p>The <a href="nng_respondent_open.3.html"><code>nng_respondent0_open()</code></a> 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.</p>
</div>
<div class="paragraph">
<p>Respondents may discard a survey by simply not replying to it.</p>
</div>
<div class="paragraph">
<p>Raw mode sockets (set with <a href="nng_options.5.html#NNG_OPT_RAW"><code>NNG_OPT_RAW</code></a>)
ignore all these restrictions.</p>
</div>
</div>
<div class="sect2">
<h3 id="_context_operations">Context Operations</h3>
<div class="paragraph">
<p>This protocol supports the creation of <a href="nng_ctx.5.html">contexts</a> for concurrent
use cases using <a href="nng_ctx_open.3.html"><code>nng_ctx_open()</code></a>.</p>
</div>
<div class="paragraph">
<p>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.</p>
</div>
</div>
<div class="sect2">
<h3 id="_protocol_versions">Protocol Versions</h3>
<div class="paragraph">
<p>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 <a href="http://nanomsg.org">nanomsg</a>, but was not released in any
production version.)</p>
</div>
</div>
<div class="sect2">
<h3 id="_protocol_options">Protocol Options</h3>
<div class="paragraph">
<p>The <em>respondent</em> protocol has no protocol-specific options.</p>
</div>
</div>
<div class="sect2">
<h3 id="_protocol_headers">Protocol Headers</h3>
<div class="paragraph">
<p>
The <em>respondent</em> protocol uses a <em>backtrace</em> in the header.
This is more fully documented in the <a href="nng_surveyor.7.html"><em>surveyor</em></a> manual.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_see_also">SEE ALSO</h2>
<div class="sectionbody">
<div class="paragraph text-left">
<p><a href="nng_respondent_open.3.html">nng_respondent_open(3)</a>,
<a href="nng_surveyor.7.html">nng_surveyor(7)</a>,
<a href="nng.7.html">nng(7)</a></p>
</div>
</div>
</div>