86 lines
2.5 KiB
Text
86 lines
2.5 KiB
Text
= nng_rep(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_rep - reply protocol
|
|
|
|
== SYNOPSIS
|
|
|
|
[source,c]
|
|
----
|
|
#include <nng/protocol/reqrep0/rep.h>
|
|
----
|
|
|
|
== DESCRIPTION
|
|
|
|
(((protocol, _rep_)))
|
|
The ((_rep_ protocol)) is one half of a ((request/reply pattern)).
|
|
In this pattern, a requester sends a message to one replier, who
|
|
is expected to reply.
|
|
The request is resent if no reply arrives,
|
|
until a reply is received or the request times out.
|
|
|
|
TIP: This protocol is useful in setting up RPC-like services.
|
|
It is also reliable, in that a requester will keep retrying until
|
|
a reply is received.
|
|
|
|
The _rep_ protocol is the replier side, and the
|
|
xref:nng_req.7.adoc[_req_] protocol is the requester side.
|
|
|
|
=== Socket Operations
|
|
|
|
The xref:nng_rep_open.3.adoc[`nng_rep0_open()`] functions create a replier socket.
|
|
This socket may be used to receive messages (requests), and then to send
|
|
replies.
|
|
|
|
Generally a reply can only be sent after receiving a request.
|
|
|
|
Send operations will result in `NNG_ESTATE` if no corresponding request
|
|
was previously received.
|
|
|
|
Likewise, only one receive operation may be pending at a time.
|
|
Any additional concurrent receive operations will result in `NNG_ESTATE`.
|
|
|
|
xref:nng.7.adoc#raw_mode[Raw] mode sockets 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()`].
|
|
|
|
Each context may have at most one outstanding request, and operates
|
|
independently of the others.
|
|
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.)
|
|
|
|
==== Protocol Options
|
|
|
|
The _rep_ protocol has no protocol-specific options.
|
|
|
|
==== Protocol Headers
|
|
|
|
(((backtrace)))
|
|
The _rep_ protocol uses a _backtrace_ in the header.
|
|
This is more fully documented in the xref:nng_req.7.adoc[_req_] manual.
|
|
|
|
== SEE ALSO
|
|
|
|
[.text-left]
|
|
xref:nng_rep_open.3.adoc[nng_rep_open(3)],
|
|
xref:nng.7.adoc[nng(7)],
|
|
xref:nng_req.7.adoc[nng_req(7)]
|