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 the requester will keep retrying until a reply is received. |
The rep protocol is the replier side, and the req protocol is the requester side.
The 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
.
Raw mode sockets ignore all these restrictions.
This protocol supports the creation of contexts for concurrent
use cases using nng_ctx_open()
.
Each context may have at most one outstanding request, and operates independently from 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.
Only version 0 of this protocol is supported. (At the time of writing, no other versions of this protocol have been defined.)
The rep protocol uses a backtrace in the header. This is more fully documented in the req manual.