.. 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 int 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)