exchange

Base system with REST service to issue digital coins, run by the payment service provider
Log | Files | Refs | Submodules | README | LICENSE

commit 0b9ffa874f7dcf9e39061ec3dc066ea128a90aee
parent 749c02fe37d75195e50c8cd225922d26bb3f974d
Author: Christian Grothoff <christian@grothoff.org>
Date:   Sun, 10 Dec 2017 19:15:15 +0100

add -r command line option to wirewatch

Diffstat:
Mdoc/taler-exchange-wirewatch.1 | 3+++
Msrc/exchange/taler-exchange-wirewatch.c | 50+++++++++++++++++++++++++++++++-------------------
2 files changed, 34 insertions(+), 19 deletions(-)

diff --git a/doc/taler-exchange-wirewatch.1 b/doc/taler-exchange-wirewatch.1 @@ -22,6 +22,9 @@ Print short help on options. .IP "\-T, \-\-test" Run in test mode and exit when idle. .B +.IP "\-r, \-\-reset" +Ignore our own database and start with transactions from the beginning of time. +.B .IP "\-v, \-\-version" Print version information. .B diff --git a/src/exchange/taler-exchange-wirewatch.c b/src/exchange/taler-exchange-wirewatch.c @@ -117,6 +117,11 @@ static int delay; static int test_mode; /** + * Are we running from scratch and should re-process all transactions? + */ +static int reset_mode; + +/** * Next task to run, if any. */ static struct GNUNET_SCHEDULER_Task *task; @@ -443,26 +448,29 @@ find_transfers (void *cls) GNUNET_SCHEDULER_shutdown (); return; } - qs = db_plugin->get_latest_reserve_in_reference (db_plugin->cls, - session, - &start_off, - &start_off_size); - if (GNUNET_DB_STATUS_HARD_ERROR == qs) - { - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "Failed to obtain starting point for montoring from database!\n"); - global_ret = GNUNET_SYSERR; - GNUNET_SCHEDULER_shutdown (); - return; - } - if (GNUNET_DB_STATUS_SOFT_ERROR == qs) + if (! reset_mode) { - /* try again */ - db_plugin->rollback (db_plugin->cls, - session); - task = GNUNET_SCHEDULER_add_now (&find_transfers, - NULL); - return; + qs = db_plugin->get_latest_reserve_in_reference (db_plugin->cls, + session, + &start_off, + &start_off_size); + if (GNUNET_DB_STATUS_HARD_ERROR == qs) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Failed to obtain starting point for montoring from database!\n"); + global_ret = GNUNET_SYSERR; + GNUNET_SCHEDULER_shutdown (); + return; + } + if (GNUNET_DB_STATUS_SOFT_ERROR == qs) + { + /* try again */ + db_plugin->rollback (db_plugin->cls, + session); + task = GNUNET_SCHEDULER_add_now (&find_transfers, + NULL); + return; + } } delay = GNUNET_YES; hh = wire_plugin->get_history (wire_plugin->cls, @@ -535,6 +543,10 @@ main (int argc, "test", "run in test mode and exit when idle", &test_mode), + GNUNET_GETOPT_option_flag ('r', + "reset", + "start fresh with all transactions in the history", + &reset_mode), GNUNET_GETOPT_OPTION_END };