command to access history
This commit is contained in:
parent
3e7abf8a36
commit
a7d8984671
@ -50,7 +50,7 @@ check_PROGRAMS = \
|
|||||||
test-mintdb-keyio \
|
test-mintdb-keyio \
|
||||||
test-mintdb-postgres \
|
test-mintdb-postgres \
|
||||||
test-perf-taler-mintdb \
|
test-perf-taler-mintdb \
|
||||||
perf-taler-mintdb
|
perf-mintdb
|
||||||
|
|
||||||
TESTS = \
|
TESTS = \
|
||||||
test-mintdb-postgres \
|
test-mintdb-postgres \
|
||||||
@ -93,11 +93,11 @@ test_perf_taler_mintdb_LDADD = \
|
|||||||
-ljansson \
|
-ljansson \
|
||||||
-lgnunetutil
|
-lgnunetutil
|
||||||
|
|
||||||
perf_taler_mintdb_SOURCES = \
|
perf_mintdb_SOURCES = \
|
||||||
perf_taler_mintdb.c \
|
perf_taler_mintdb.c \
|
||||||
perf_taler_mintdb_init.c \
|
perf_taler_mintdb_init.c \
|
||||||
perf_taler_mintdb_interpreter.c
|
perf_taler_mintdb_interpreter.c
|
||||||
perf_taler_mintdb_LDADD = \
|
perf_mintdb_LDADD = \
|
||||||
libtalermintdb.la \
|
libtalermintdb.la \
|
||||||
$(top_srcdir)/src/util/libtalerutil.la \
|
$(top_srcdir)/src/util/libtalerutil.la \
|
||||||
$(top_srcdir)/src/pq/libtalerpq.la \
|
$(top_srcdir)/src/pq/libtalerpq.la \
|
||||||
|
@ -510,7 +510,7 @@ interpret (struct PERF_TALER_MINTDB_interpreter_state *state)
|
|||||||
GNUNET_assert (GNUNET_SYSERR !=
|
GNUNET_assert (GNUNET_SYSERR !=
|
||||||
(source_index = cmd_find (state->cmd,
|
(source_index = cmd_find (state->cmd,
|
||||||
state->cmd[state->i]
|
state->cmd[state->i]
|
||||||
.details.get_deposit.label_source)));
|
.details.get_deposit.label_deposit)));
|
||||||
GNUNET_assert (NULL !=
|
GNUNET_assert (NULL !=
|
||||||
(deposit = state->cmd[source_index].exposed.data.deposit));
|
(deposit = state->cmd[source_index].exposed.data.deposit));
|
||||||
state->plugin->have_deposit (state->plugin->cls,
|
state->plugin->have_deposit (state->plugin->cls,
|
||||||
@ -544,15 +544,15 @@ interpret (struct PERF_TALER_MINTDB_interpreter_state *state)
|
|||||||
|
|
||||||
case PERF_TALER_MINTDB_CMD_GET_RESERVE:
|
case PERF_TALER_MINTDB_CMD_GET_RESERVE:
|
||||||
{
|
{
|
||||||
int source_index;
|
int reserve_index;
|
||||||
struct TALER_MINTDB_Reserve *reserve;
|
struct TALER_MINTDB_Reserve *reserve;
|
||||||
|
|
||||||
GNUNET_assert (GNUNET_SYSERR !=
|
GNUNET_assert (GNUNET_SYSERR !=
|
||||||
(source_index = cmd_find (state->cmd,
|
(reserve_index = cmd_find (state->cmd,
|
||||||
state->cmd[state->i]
|
state->cmd[state->i]
|
||||||
.details.get_reserve.label_source)));
|
.details.get_reserve.label_reserve)));
|
||||||
GNUNET_assert (NULL !=
|
GNUNET_assert (NULL !=
|
||||||
(reserve = state->cmd[source_index].exposed.data.reserve));
|
(reserve = state->cmd[reserve_index].exposed.data.reserve));
|
||||||
GNUNET_assert (GNUNET_OK ==
|
GNUNET_assert (GNUNET_OK ==
|
||||||
(state->plugin->reserve_get (state->plugin->cls,
|
(state->plugin->reserve_get (state->plugin->cls,
|
||||||
state->session,
|
state->session,
|
||||||
@ -560,6 +560,27 @@ interpret (struct PERF_TALER_MINTDB_interpreter_state *state)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PERF_TALER_MINTDB_CMD_GET_RESERVE_HISTORY:
|
||||||
|
{
|
||||||
|
int reserve_index;
|
||||||
|
struct TALER_MINTDB_ReserveHistory *history;
|
||||||
|
struct TALER_MINTDB_Reserve *reserve;
|
||||||
|
|
||||||
|
GNUNET_assert (GNUNET_SYSERR !=
|
||||||
|
(reserve_index = cmd_find (state->cmd,
|
||||||
|
state->cmd[state->i]
|
||||||
|
.details.get_reserve_history.label_reserve)));
|
||||||
|
GNUNET_assert (NULL !=
|
||||||
|
(reserve = state->cmd[reserve_index].exposed.data.reserve));
|
||||||
|
GNUNET_assert (NULL !=
|
||||||
|
(history = state->plugin->get_reserve_history (state->plugin->cls,
|
||||||
|
state->session,
|
||||||
|
&reserve->pub)));
|
||||||
|
state->plugin->free_reserve_history (state->plugin->cls,
|
||||||
|
history);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case PERF_TALER_MINTDB_CMD_INSERT_DENOMINATION:
|
case PERF_TALER_MINTDB_CMD_INSERT_DENOMINATION:
|
||||||
{
|
{
|
||||||
struct TALER_MINTDB_DenominationKeyIssueInformation *dki =
|
struct TALER_MINTDB_DenominationKeyIssueInformation *dki =
|
||||||
@ -581,7 +602,7 @@ interpret (struct PERF_TALER_MINTDB_interpreter_state *state)
|
|||||||
GNUNET_assert (GNUNET_SYSERR !=
|
GNUNET_assert (GNUNET_SYSERR !=
|
||||||
(source_index = cmd_find (state->cmd,
|
(source_index = cmd_find (state->cmd,
|
||||||
state->cmd[state->i]
|
state->cmd[state->i]
|
||||||
.details.get_denomination.label_source)));
|
.details.get_denomination.label_denom)));
|
||||||
GNUNET_assert (NULL !=
|
GNUNET_assert (NULL !=
|
||||||
(dki = state->cmd[source_index].exposed.data.dki));
|
(dki = state->cmd[source_index].exposed.data.dki));
|
||||||
state->plugin->get_denomination_info (state->plugin->cls,
|
state->plugin->get_denomination_info (state->plugin->cls,
|
||||||
@ -625,7 +646,7 @@ interpret (struct PERF_TALER_MINTDB_interpreter_state *state)
|
|||||||
GNUNET_assert (GNUNET_SYSERR !=
|
GNUNET_assert (GNUNET_SYSERR !=
|
||||||
(source_index = cmd_find (state->cmd,
|
(source_index = cmd_find (state->cmd,
|
||||||
state->cmd[state->i]
|
state->cmd[state->i]
|
||||||
.details.get_denomination.label_source)));
|
.details.get_denomination.label_denom)));
|
||||||
GNUNET_assert (NULL !=
|
GNUNET_assert (NULL !=
|
||||||
(blindcoin = state->cmd[source_index].exposed.data.blindcoin));
|
(blindcoin = state->cmd[source_index].exposed.data.blindcoin));
|
||||||
state->plugin->get_withdraw_info (state->plugin->cls,
|
state->plugin->get_withdraw_info (state->plugin->cls,
|
||||||
@ -927,16 +948,16 @@ PERF_TALER_MINTDB_check (const struct PERF_TALER_MINTDB_Cmd *cmd)
|
|||||||
|
|
||||||
case PERF_TALER_MINTDB_CMD_GET_DENOMINATION:
|
case PERF_TALER_MINTDB_CMD_GET_DENOMINATION:
|
||||||
ret_loc = find_test (cmd,
|
ret_loc = find_test (cmd,
|
||||||
cmd[i].details.get_denomination.label_source,
|
cmd[i].details.get_denomination.label_denom,
|
||||||
i,
|
i,
|
||||||
"label_source");
|
"label_denom");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PERF_TALER_MINTDB_CMD_GET_RESERVE:
|
case PERF_TALER_MINTDB_CMD_GET_RESERVE:
|
||||||
ret_loc = find_test (cmd,
|
ret_loc = find_test (cmd,
|
||||||
cmd[i].details.get_reserve.label_source,
|
cmd[i].details.get_reserve.label_reserve,
|
||||||
i,
|
i,
|
||||||
"label_source");
|
"label_reserve");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PERF_TALER_MINTDB_CMD_INSERT_DEPOSIT:
|
case PERF_TALER_MINTDB_CMD_INSERT_DEPOSIT:
|
||||||
@ -948,9 +969,9 @@ PERF_TALER_MINTDB_check (const struct PERF_TALER_MINTDB_Cmd *cmd)
|
|||||||
|
|
||||||
case PERF_TALER_MINTDB_CMD_GET_DEPOSIT:
|
case PERF_TALER_MINTDB_CMD_GET_DEPOSIT:
|
||||||
ret_loc = find_test (cmd,
|
ret_loc = find_test (cmd,
|
||||||
cmd[i].details.get_deposit.label_source,
|
cmd[i].details.get_deposit.label_deposit,
|
||||||
i,
|
i,
|
||||||
"label_source");
|
"label_deposit");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PERF_TALER_MINTDB_CMD_INSERT_WITHDRAW:
|
case PERF_TALER_MINTDB_CMD_INSERT_WITHDRAW:
|
||||||
@ -962,9 +983,9 @@ PERF_TALER_MINTDB_check (const struct PERF_TALER_MINTDB_Cmd *cmd)
|
|||||||
|
|
||||||
case PERF_TALER_MINTDB_CMD_GET_WITHDRAW:
|
case PERF_TALER_MINTDB_CMD_GET_WITHDRAW:
|
||||||
ret_loc = find_test (cmd,
|
ret_loc = find_test (cmd,
|
||||||
cmd[i].details.get_withdraw.label_source,
|
cmd[i].details.get_withdraw.label_coin,
|
||||||
i,
|
i,
|
||||||
"label_source");
|
"label_coin");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default :
|
default :
|
||||||
|
@ -17,6 +17,14 @@
|
|||||||
* @file mintdb/perf_taler_mintdb_interpreter.h
|
* @file mintdb/perf_taler_mintdb_interpreter.h
|
||||||
* @brief Library for performance analysis of the Taler database
|
* @brief Library for performance analysis of the Taler database
|
||||||
* @author Nicolas Fournier
|
* @author Nicolas Fournier
|
||||||
|
*
|
||||||
|
* This library contains functions and macro alowing Taler performance analysis
|
||||||
|
* to be written with ease.
|
||||||
|
* To do so, create a #PERF_TALER_MINTDB_Cmd array and fill it with the commands
|
||||||
|
* to execute in chronological order. Some command have an exposed variable wich
|
||||||
|
* can be reused in other commands.
|
||||||
|
* Macros are available to make the use much easier so feel free to use them
|
||||||
|
* to initialize your own command array.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __PERF_TALER_MINTDB_INTERPRETER_H__
|
#ifndef __PERF_TALER_MINTDB_INTERPRETER_H__
|
||||||
@ -209,6 +217,8 @@
|
|||||||
/**
|
/**
|
||||||
* Inserts informations about a denomination key in the database
|
* Inserts informations about a denomination key in the database
|
||||||
*
|
*
|
||||||
|
* @exposed #PERF_TALER_MINTDB_DENOMINATION_INFO
|
||||||
|
*
|
||||||
* @param _label the label of this command
|
* @param _label the label of this command
|
||||||
*/
|
*/
|
||||||
#define PERF_TALER_MINTDB_INIT_CMD_INSERT_DENOMINATION(_label) \
|
#define PERF_TALER_MINTDB_INIT_CMD_INSERT_DENOMINATION(_label) \
|
||||||
@ -222,19 +232,21 @@
|
|||||||
* Polls the database about informations regarding a specific denomination key
|
* Polls the database about informations regarding a specific denomination key
|
||||||
*
|
*
|
||||||
* @param _label the label of this command
|
* @param _label the label of this command
|
||||||
* @param _label_source the label of the command prividing information about the denomination key
|
* @param _label_denom the label of the command prividing information about the denomination key
|
||||||
*/
|
*/
|
||||||
#define PERF_TALER_MINTDB_INIT_CMD_GET_DENOMINATION(_label, _label_source) \
|
#define PERF_TALER_MINTDB_INIT_CMD_GET_DENOMINATION(_label, _label_denom) \
|
||||||
{ \
|
{ \
|
||||||
.command = PERF_TALER_MINTDB_CMD_GET_DENOMINATION, \
|
.command = PERF_TALER_MINTDB_CMD_GET_DENOMINATION, \
|
||||||
.label = _label, \
|
.label = _label, \
|
||||||
.exposed.type = PERF_TALER_MINTDB_NONE, \
|
.exposed.type = PERF_TALER_MINTDB_NONE, \
|
||||||
.details.get_denomination.label_source = _label_source, \
|
.details.get_denomination.label_denom = _label_denom, \
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new reserve in the database
|
* Creates a new reserve in the database
|
||||||
*
|
*
|
||||||
|
* @exposed #PERF_TALER_MINTDB_RESERVE
|
||||||
|
*
|
||||||
* @param _label the name of this command
|
* @param _label the name of this command
|
||||||
*/
|
*/
|
||||||
#define PERF_TALER_MINTDB_INIT_CMD_INSERT_RESERVE(_label) \
|
#define PERF_TALER_MINTDB_INIT_CMD_INSERT_RESERVE(_label) \
|
||||||
@ -249,20 +261,37 @@
|
|||||||
* Polls the database for a secific reserve's details
|
* Polls the database for a secific reserve's details
|
||||||
*
|
*
|
||||||
* @param _label the label of this command
|
* @param _label the label of this command
|
||||||
* @param _label_source Source for the reserve to poll
|
* @param _label_reserve Source for the reserve to poll
|
||||||
*/
|
*/
|
||||||
#define PERF_TALER_MINTDB_INIT_CMD_GET_RESERVE(_label, _label_source) \
|
#define PERF_TALER_MINTDB_INIT_CMD_GET_RESERVE(_label, _label_reserve) \
|
||||||
{ \
|
{ \
|
||||||
.command = PERF_TALER_MINTDB_CMD_GET_RESERVE, \
|
.command = PERF_TALER_MINTDB_CMD_GET_RESERVE, \
|
||||||
.label = _label, \
|
.label = _label, \
|
||||||
.exposed.type = PERF_TALER_MINTDB_NONE, \
|
.exposed.type = PERF_TALER_MINTDB_NONE, \
|
||||||
.details.get_reserve.label_source = _label_source \
|
.details.get_reserve.label_reserve = _label_reserve \
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Polls the database for the history of a reserve
|
||||||
|
*
|
||||||
|
* @param _label the label of the command
|
||||||
|
* @param _label_reserve the reserve to examine
|
||||||
|
*/
|
||||||
|
#define PERF_TALER_MINTDB_INIT_CMD_GET_RESERVE_HISTORY(_label, _label_reserve) \
|
||||||
|
{ \
|
||||||
|
.command = PERF_TALER_MINTDB_CMD_GET_RESERVE_HISTORY, \
|
||||||
|
.label = _label, \
|
||||||
|
.exposed.type = PERF_TALER_MINTDB_NONE, \
|
||||||
|
.details.get_reserve_history.label_reserve = _label_reserve \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Insert a deposit into the database
|
* Insert a deposit into the database
|
||||||
*
|
*
|
||||||
|
* @exposes #PERF_TALER_MINTDB_DEPOSIT
|
||||||
|
*
|
||||||
* @param _label the label of this command
|
* @param _label the label of this command
|
||||||
* @param _label_dki source to use for the denomination key
|
* @param _label_dki source to use for the denomination key
|
||||||
*/
|
*/
|
||||||
@ -286,13 +315,15 @@
|
|||||||
.command = PERF_TALER_MINTDB_CMD_GET_DEPOSIT, \
|
.command = PERF_TALER_MINTDB_CMD_GET_DEPOSIT, \
|
||||||
.label = _label, \
|
.label = _label, \
|
||||||
.exposed.type = PERF_TALER_MINTDB_NONE, \
|
.exposed.type = PERF_TALER_MINTDB_NONE, \
|
||||||
.details.get_deposit.label_source = _label_deposit \
|
.details.get_deposit.label_deposit = _label_deposit \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Inserts informations about a withdrawal in the database
|
* Inserts informations about a withdrawal in the database
|
||||||
*
|
*
|
||||||
|
* @exposes #PERF_TALER_MINTDB_BLINDCOIN
|
||||||
|
*
|
||||||
* @param _label the label of this command
|
* @param _label the label of this command
|
||||||
* @param _label_dki denomination key used to sign the coin
|
* @param _label_dki denomination key used to sign the coin
|
||||||
* @param _label_reserve reserve used to emmit the coin
|
* @param _label_reserve reserve used to emmit the coin
|
||||||
@ -313,17 +344,33 @@
|
|||||||
* Polls the database about informations regarding a specific withdrawal
|
* Polls the database about informations regarding a specific withdrawal
|
||||||
*
|
*
|
||||||
* @param _label the label of this command
|
* @param _label the label of this command
|
||||||
* @param _label_source the label of the command providing the coin to check
|
* @param _label_coin the label of the command providing the coin to check
|
||||||
*/
|
*/
|
||||||
#define PERF_TALER_MINTDB_INIT_CMD_GET_WITHDRAW(_label, _label_source) \
|
#define PERF_TALER_MINTDB_INIT_CMD_GET_WITHDRAW(_label, _label_coin) \
|
||||||
{ \
|
{ \
|
||||||
.command = PERF_TALER_MINTDB_CMD_GET_WITHDRAW, \
|
.command = PERF_TALER_MINTDB_CMD_GET_WITHDRAW, \
|
||||||
.label = _label, \
|
.label = _label, \
|
||||||
.exposed.type = PERF_TALER_MINTDB_NONE, \
|
.exposed.type = PERF_TALER_MINTDB_NONE, \
|
||||||
.details.get_withdraw.label_source = _label_source, \
|
.details.get_withdraw.label_coin = _label_coin, \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Composit command representing a coin withdrawal
|
||||||
|
* It first access the reserve history to check the ballance
|
||||||
|
* and hen emits a coin.
|
||||||
|
*
|
||||||
|
* @exposes #PERF_TALER_MINTDB_BLINDCOIN
|
||||||
|
*
|
||||||
|
* @param _label the label of this command
|
||||||
|
* @param _label_reserve the reserve used to provide currency
|
||||||
|
* @param _label_dki the denomination of the created coin
|
||||||
|
*/
|
||||||
|
#define PERF_TALER_MINTDB_INIT_CMD_WITHDRAWAL(_label, _label_dki, _label_reserve) \
|
||||||
|
PERF_TALER_MINTDB_CMD_GET_RESERVE_HISTORY("", _label_reserve), \
|
||||||
|
PERF_TALER_MINTDB_CMD_INSERT_WITHDRAW(_label, _label_dki, _label_reserve),
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The type of data stored in #PERF_TALER_MINTDB_Memory
|
* The type of data stored in #PERF_TALER_MINTDB_Memory
|
||||||
*/
|
*/
|
||||||
@ -457,6 +504,11 @@ enum PERF_TALER_MINTDB_CMD_Name
|
|||||||
*/
|
*/
|
||||||
PERF_TALER_MINTDB_CMD_GET_RESERVE,
|
PERF_TALER_MINTDB_CMD_GET_RESERVE,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the history of a reserve
|
||||||
|
*/
|
||||||
|
PERF_TALER_MINTDB_CMD_GET_RESERVE_HISTORY,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Insert informations about a withdrawal in the database
|
* Insert informations about a withdrawal in the database
|
||||||
*/
|
*/
|
||||||
@ -632,7 +684,7 @@ union PERF_TALER_MINTDB_CMD_Details
|
|||||||
/**
|
/**
|
||||||
* The label of the source of the deposit to check
|
* The label of the source of the deposit to check
|
||||||
*/
|
*/
|
||||||
const char *label_source;
|
const char *label_deposit;
|
||||||
} get_deposit;
|
} get_deposit;
|
||||||
|
|
||||||
|
|
||||||
@ -644,10 +696,22 @@ union PERF_TALER_MINTDB_CMD_Details
|
|||||||
/**
|
/**
|
||||||
* The label of the source of the reserve to check
|
* The label of the source of the reserve to check
|
||||||
*/
|
*/
|
||||||
const char *label_source;
|
const char *label_reserve;
|
||||||
} get_reserve;
|
} get_reserve;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extra data requiered for the #PERF_TALER_MINTDB_CMD_GET_RESERVE command
|
||||||
|
*/
|
||||||
|
struct PERF_TALER_MINTDB_CMD_getReserveHistoryDetails
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* The label of the source of the reserve to check
|
||||||
|
*/
|
||||||
|
const char *label_reserve;
|
||||||
|
} get_reserve_history;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Extra data requiered by the #PERF_TALER_MINTDB_CMD_GET_DENOMINATION command
|
* Extra data requiered by the #PERF_TALER_MINTDB_CMD_GET_DENOMINATION command
|
||||||
*/
|
*/
|
||||||
@ -656,7 +720,7 @@ union PERF_TALER_MINTDB_CMD_Details
|
|||||||
/**
|
/**
|
||||||
* The label of the source of the denomination to check
|
* The label of the source of the denomination to check
|
||||||
*/
|
*/
|
||||||
const char *label_source;
|
const char *label_denom;
|
||||||
} get_denomination;
|
} get_denomination;
|
||||||
|
|
||||||
|
|
||||||
@ -682,9 +746,9 @@ union PERF_TALER_MINTDB_CMD_Details
|
|||||||
struct PERF_TALER_MINTDB_CMD_getWithdraw
|
struct PERF_TALER_MINTDB_CMD_getWithdraw
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* label of the source for the withdra information
|
* label of the source for the coin information
|
||||||
*/
|
*/
|
||||||
const char *label_source;
|
const char *label_coin;
|
||||||
} get_withdraw;
|
} get_withdraw;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user