8 #include "uniretrygen.h"
11 #include "wvstringlist.h"
12 #include "wvlinkerhack.h"
18 #define DPRINTF(format, args...) fprintf(stderr, format ,##args);
20 #define DPRINTF if (0) printf
26 DPRINTF(
"encoded_params = %s\n", encoded_params.
cstr());
29 if (params.count() == 0)
33 if (params.count() == 0)
36 WvString retry_interval_ms_str = params.popstr();
37 time_t retry_interval_ms = retry_interval_ms_str.
num();
38 if (retry_interval_ms < 0)
39 retry_interval_ms = 0;
41 UniRetryGen::ReconnectCallback(),
51 ReconnectCallback _reconnect_callback,
52 time_t _retry_interval_ms)
56 reconnect_callback(_reconnect_callback),
57 retry_interval_ms(_retry_interval_ms),
58 next_reconnect_attempt(wvtime())
60 DPRINTF(
"UniRetryGen::UniRetryGen(%s, %ld)\n",
61 moniker.
cstr(), retry_interval_ms);
67 void UniRetryGen::maybe_reconnect()
71 if (!(wvtime() < next_reconnect_attempt))
77 DPRINTF(
"UniRetryGen::maybe_reconnect: !gen\n");
83 DPRINTF(
"UniRetryGen::maybe_reconnect: gen->isok()\n");
89 if (!!reconnect_callback) reconnect_callback(*
this);
93 DPRINTF(
"UniRetryGen::maybe_reconnect: !gen->isok()\n");
97 next_reconnect_attempt =
98 msecadd(next_reconnect_attempt, retry_interval_ms);
105 void UniRetryGen::maybe_disconnect()
109 DPRINTF(
"UniRetryGen::maybe_disconnect: inner() && !inner()->isok()\n");
111 log(
"Disconnected\n");
117 WVRELEASE(old_inner);
119 next_reconnect_attempt = msecadd(wvtime(), retry_interval_ms);
170 DPRINTF(
"UniRetryGen::get(%s) returns %s\n", key.
printable().
cstr(), result.
cstr());
175 DPRINTF(
"UniRetryGen::get(%s) returns %s because it is root key\n", key.
printable().
cstr(), result.
cstr());
179 DPRINTF(
"UniRetryGen::get(%s): !isok()\n", key.
printable().
cstr());
180 result = WvString::null;
204 DPRINTF(
"UniRetryGen::exists(%s)\n", key.
printable().
cstr());
210 DPRINTF(
"UniRetryGen::exists: returns %s\n", result?
"true":
"false");
214 DPRINTF(
"UniRetryGen::exists: !isok()\n");