.. This work is licensed under a Creative Commons Attribution 4.0 International License. | |
.. SPDX-License-Identifier: CC-BY-4.0 | |
.. CAUTION: this document is generated from source in doc/src/rtd. | |
.. To make changes edit the source and recompile the document. | |
.. Do NOT make changes directly to .rst or .md files. | |
============================================================================================ | |
Man Page: rmr_set_stimeout | |
============================================================================================ | |
RMR Library Functions | |
============================================================================================ | |
NAME | |
-------------------------------------------------------------------------------------------- | |
rmr_set_stimeout | |
SYNOPSIS | |
-------------------------------------------------------------------------------------------- | |
:: | |
#include <rmr/rmr.h> | |
rmr_mbuf_t* rmr_set_stimeout( void* vctx, int rloops ); | |
DESCRIPTION | |
-------------------------------------------------------------------------------------------- | |
The rmr_set_stimeout function sets the configuration for how | |
RMr will retry message send operations which complete with | |
either a *timeout* or *again* completion value. (Send | |
operations include all of the possible message send | |
functions: *rmr_send_msg(), rmr_call(), rmr_rts_msg()* and | |
*rmr_wh_send_msg().* The *rloops* parameter sets the maximum | |
number of retry loops that will be attempted before giving up | |
and returning the unsuccessful state to the user application. | |
Each retry loop is approximately 1000 attempts, and RMr does | |
**not** invoke any sleep function between retries in the | |
loop; a small, 1 mu-sec, sleep is executed between loop sets | |
if the *rloops* value is greater than 1. | |
Disabling Retries | |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
By default, the send operations will execute with an *rloop* | |
setting of 1; each send operation will attempt to resend the | |
message approximately 1000 times before giving up. If the | |
user application does not want to have send operations retry | |
when the underlying transport mechanism indicates *timeout* | |
or *again,* the application should invoke this function and | |
pass a value of 0 (zero) for *rloops.* With this setting, all | |
RMr send operations will attempt a send operation only | |
**once,** returning immediately to the caller with the state | |
of that single attempt. | |
RETURN VALUE | |
-------------------------------------------------------------------------------------------- | |
This function returns a -1 to indicate that the *rloops* | |
value could not be set, and the value *RMR_OK* to indicate | |
success. | |
ERRORS | |
-------------------------------------------------------------------------------------------- | |
Currently errno is **not** set by this function; the only | |
cause of a failure is an invalid context (*vctx*) pointer. | |
EXAMPLE | |
-------------------------------------------------------------------------------------------- | |
The following is a simple example of how the rmr_set_stimeout | |
function is called. | |
:: | |
#define NO_FLAGS 0 | |
char* port = "43086"; // port for message router listen | |
int max_size = 4096; // max message size for default allocations | |
void* mr_context; // message router context | |
mr_context = rmr_init( port, max_size, NO_FLAGS ); | |
if( mr_context != NULL ) { | |
rmr_set_stimeout( mr_context, 0 ); // turn off retries | |
} | |
SEE ALSO | |
-------------------------------------------------------------------------------------------- | |
rmr_alloc_msg(3), rmr_call(3), rmr_free_msg(3), rmr_init(3), | |
rmr_payload_size(3), rmr_rcv_msg(3), rmr_rcv_specific(3), | |
rmr_rts_msg(3), rmr_ready(3), rmr_mk_ring(3), | |
rmr_ring_free(3), rmr_send_msg(3), rmr_torcv_rcv(3), | |
rmr_wh_send_msg(3) |