TibrvTransport::sendRequest()
Method
Declaration
virtual TibrvStatus sendRequest (
const TibrvMsg& message,
TibrvMsg& reply,
tibrv_f64 timeout);
Purpose
Send a request message and wait for a reply.
Blocking can Stall Event Dispatch
Warning |
This call blocks all other activity on its program thread. If appropriate, programmers must ensure that other threads continue dispatching events on its queues. |
Parameter |
Description |
|
Send this message. |
|
The program supplies a variable, and the method stores the inbound reply in that variable. The program owns the reply message, and must call its destructor to reclaim storage. |
|
Maximum time (in seconds) that this call can block while waiting for a reply.
|
Remarks
The status code TIBRV_TIMEOUT indicates that the specified time expired before receiving a reply.
Programs that receive and process the request message cannot determine that the sender has blocked until a reply arrives.
The request message must have a valid destination subject; see TibrvMsg::setSendSubject().
Operation
This method operates in several synchronous steps:
Procedure
1. | Create an inbox name, and an event that listens to it. Overwrite any existing reply subject of message with the inbox name. |
2. | Send the outbound message . |
3. | Block until the listener receives a reply; if the time limit expires before a reply arrives, then return TIBRV_TIMEOUT. (The reply circumvents the event queue mechanism, so it is not necessary to explicitly call dispatch methods in the program.) |
4. | Store the reply in the variable specified as the reply parameter. |
5. | Return. |