diff options
author | Christian Grothoff <christian@grothoff.org> | 2017-03-18 22:06:27 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2017-03-18 22:06:27 +0100 |
commit | a9f9161c3afbebb09fff25a0ce54e27fd6ae1ff9 (patch) | |
tree | b8cfcc7be6478367aef28c2b4dc1157892b7c082 /src/auditor | |
parent | 9cfe47493c29d3c6400258bcc98153c622dacb4e (diff) |
simplify auditordb API to match actual requirements better
Diffstat (limited to 'src/auditor')
-rw-r--r-- | src/auditor/taler-auditor.c | 131 |
1 files changed, 44 insertions, 87 deletions
diff --git a/src/auditor/taler-auditor.c b/src/auditor/taler-auditor.c index 85eacfc65..3939f2801 100644 --- a/src/auditor/taler-auditor.c +++ b/src/auditor/taler-auditor.c @@ -27,8 +27,6 @@ * TODO: * - COMPLETE: implement misc. FIXMEs * - COMPLETE: deal with risk / expired denomination keys in #sync_denomination - * - SANITY: modify auditordb to track risk with balances and fees (and rename callback - * to clarify what it is) * - SANITY: rename operations to better describe what they do! * - OPTIMIZE/SIMPLIFY: modify auditordb to return DK when we inquire about deposit/refresh/refund, * so we can avoid the costly #get_coin_summary with the transaction history building @@ -939,20 +937,20 @@ analyze_reserves (void *cls) pp.last_reserve_in_serial_id, &handle_reserve_in, &rc)) - { - GNUNET_break (0); - return GNUNET_SYSERR; - } + { + GNUNET_break (0); + return GNUNET_SYSERR; + } if (GNUNET_OK != edb->select_reserves_out_above_serial_id (edb->cls, esession, pp.last_reserve_out_serial_id, &handle_reserve_out, &rc)) - { - GNUNET_break (0); - return GNUNET_SYSERR; - } + { + GNUNET_break (0); + return GNUNET_SYSERR; + } /* TODO: iterate over table for reserve expiration refunds! (#4956) */ GNUNET_CONTAINER_multihashmap_iterate (rc.reserves, @@ -979,7 +977,11 @@ analyze_reserves (void *cls) &rc.total_balance, &rc.total_fee_balance); } - // FIXME: handle error in 'ret'! + if (GNUNET_OK != ret) + { + GNUNET_break (0); + return GNUNET_SYSERR; + } report_reserve_balance (&rc.total_balance, &rc.total_fee_balance); return GNUNET_OK; @@ -1030,26 +1032,6 @@ struct DenominationSummary struct TALER_Amount denom_balance; /** - * Up to which point have we processed reserves_out? - */ - uint64_t last_reserve_out_serial_id; - - /** - * Up to which point have we processed deposits? - */ - uint64_t last_deposit_serial_id; - - /** - * Up to which point have we processed melts? - */ - uint64_t last_melt_serial_id; - - /** - * Up to which point have we processed refunds? - */ - uint64_t last_refund_serial_id; - - /** * #GNUNET_YES if this record already existed in the DB. * Used to decide between insert/update in * #sync_denomination(). @@ -1138,11 +1120,7 @@ init_denomination (const struct GNUNET_HashCode *denom_hash, ret = adb->get_denomination_balance (adb->cls, asession, denom_hash, - &ds->denom_balance, - &ds->last_reserve_out_serial_id, - &ds->last_deposit_serial_id, - &ds->last_melt_serial_id, - &ds->last_refund_serial_id); + &ds->denom_balance); if (GNUNET_OK == ret) { ds->in_db = GNUNET_YES; @@ -1214,27 +1192,33 @@ sync_denomination (void *cls, struct DenominationSummary *ds = value; int ret; + // FIXME: if expired, insert remaining balance historic denomination revenue, // DELETE denomination balance, and REDUCE cc->risk exposure! - - if (ds->in_db) - ret = adb->update_denomination_balance (adb->cls, - asession, - denom_hash, - &ds->denom_balance, - ds->last_reserve_out_serial_id, - ds->last_deposit_serial_id, - ds->last_melt_serial_id, - ds->last_refund_serial_id); + if (0) + { + ret = adb->del_denomination_balance (adb->cls, + asession, + denom_hash); + if (GNUNET_OK == ret) + { + // FIXME: reduce RISK + // FIXME: book denomination expiration profits! + } + } else - ret = adb->insert_denomination_balance (adb->cls, - asession, - denom_hash, - &ds->denom_balance, - ds->last_reserve_out_serial_id, - ds->last_deposit_serial_id, - ds->last_melt_serial_id, - ds->last_refund_serial_id); + { + if (ds->in_db) + ret = adb->update_denomination_balance (adb->cls, + asession, + denom_hash, + &ds->denom_balance); + else + ret = adb->insert_denomination_balance (adb->cls, + asession, + denom_hash, + &ds->denom_balance); + } if (GNUNET_OK != ret) { GNUNET_break (0); @@ -1883,7 +1867,6 @@ analyze_coins (void *cls) { struct CoinContext cc; int dret; - int rret; /* setup 'cc' */ cc.ret = GNUNET_OK; @@ -1895,7 +1878,8 @@ analyze_coins (void *cls) &cc.denom_balance, &cc.deposit_fee_balance, &cc.melt_fee_balance, - &cc.refund_fee_balance); + &cc.refund_fee_balance, + &cc.risk); if (GNUNET_SYSERR == dret) { GNUNET_break (0); @@ -1915,18 +1899,6 @@ analyze_coins (void *cls) GNUNET_assert (GNUNET_OK == TALER_amount_get_zero (currency, &cc.refund_fee_balance)); - } - rret = adb->get_risk_summary (adb->cls, - asession, - &master_pub, - &cc.risk); - if (GNUNET_SYSERR == dret) - { - GNUNET_break (0); - return GNUNET_SYSERR; - } - if (GNUNET_NO == dret) - { GNUNET_assert (GNUNET_OK == TALER_amount_get_zero (currency, &cc.risk)); @@ -1995,24 +1967,7 @@ analyze_coins (void *cls) &cc); GNUNET_CONTAINER_multihashmap_destroy (cc.coins); - if (GNUNET_YES == rret) - rret = adb->update_risk_summary (adb->cls, - asession, - &master_pub, - &cc.risk); - else - rret = adb->insert_risk_summary (adb->cls, - asession, - &master_pub, - &cc.risk); - if (GNUNET_OK != rret) - { - GNUNET_break (0); - return GNUNET_SYSERR; - } - // FIXME: FIX misnomer "denomination_summary", as this is no longer about denominations! - // FIXME: maybe combine with 'risk' above... if (GNUNET_YES == dret) dret = adb->update_denomination_summary (adb->cls, asession, @@ -2020,7 +1975,8 @@ analyze_coins (void *cls) &cc.denom_balance, &cc.deposit_fee_balance, &cc.melt_fee_balance, - &cc.refund_fee_balance); + &cc.refund_fee_balance, + &cc.risk); else dret = adb->insert_denomination_summary (adb->cls, asession, @@ -2028,7 +1984,8 @@ analyze_coins (void *cls) &cc.denom_balance, &cc.deposit_fee_balance, &cc.melt_fee_balance, - &cc.refund_fee_balance); + &cc.refund_fee_balance, + &cc.risk); if (GNUNET_OK != dret) { GNUNET_break (0); |