timing reworked
This commit is contained in:
parent
0e69c33d1f
commit
cb37f25146
@ -61,6 +61,13 @@ data_free (struct PERF_TALER_MINTDB_Data *data)
|
|||||||
{
|
{
|
||||||
switch (data->type)
|
switch (data->type)
|
||||||
{
|
{
|
||||||
|
case PERF_TALER_MINTDB_TIME:
|
||||||
|
if (NULL == data->data.time)
|
||||||
|
return;
|
||||||
|
GNUNET_free (data->data.time);
|
||||||
|
data->data.time = NULL;
|
||||||
|
return;
|
||||||
|
|
||||||
case PERF_TALER_MINTDB_DEPOSIT:
|
case PERF_TALER_MINTDB_DEPOSIT:
|
||||||
if (NULL == data->data.deposit)
|
if (NULL == data->data.deposit)
|
||||||
return;
|
return;
|
||||||
@ -112,7 +119,8 @@ data_copy (const struct PERF_TALER_MINTDB_Data *data, struct PERF_TALER_MINTDB_D
|
|||||||
switch (data->type)
|
switch (data->type)
|
||||||
{
|
{
|
||||||
case PERF_TALER_MINTDB_TIME:
|
case PERF_TALER_MINTDB_TIME:
|
||||||
copy->data.time = data->data.time;
|
copy->data.time = GNUNET_new (struct GNUNET_TIME_Absolute);
|
||||||
|
*copy->data.time = *data->data.time;
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case PERF_TALER_MINTDB_DEPOSIT:
|
case PERF_TALER_MINTDB_DEPOSIT:
|
||||||
@ -437,15 +445,18 @@ interpret (struct PERF_TALER_MINTDB_interpreter_state *state)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case PERF_TALER_MINTDB_CMD_GET_TIME:
|
case PERF_TALER_MINTDB_CMD_GET_TIME:
|
||||||
clock_gettime (CLOCK_MONOTONIC, &state->cmd[state->i].exposed.data.time);
|
state->cmd[state->i].exposed.data.time =
|
||||||
|
GNUNET_new (struct GNUNET_TIME_Absolute);
|
||||||
|
*state->cmd[state->i].exposed.data.time =
|
||||||
|
GNUNET_TIME_absolute_get ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PERF_TALER_MINTDB_CMD_GAUGER:
|
case PERF_TALER_MINTDB_CMD_GAUGER:
|
||||||
{
|
{
|
||||||
int start_index, stop_index;
|
int start_index, stop_index;
|
||||||
struct timespec start, stop;
|
float ips;
|
||||||
unsigned long elapsed_ms;
|
struct GNUNET_TIME_Absolute start, stop;
|
||||||
|
struct GNUNET_TIME_Relative elapsed;
|
||||||
GNUNET_assert (GNUNET_SYSERR !=
|
GNUNET_assert (GNUNET_SYSERR !=
|
||||||
(start_index = cmd_find (state->cmd,
|
(start_index = cmd_find (state->cmd,
|
||||||
state->cmd[state->i]
|
state->cmd[state->i]
|
||||||
@ -454,14 +465,15 @@ interpret (struct PERF_TALER_MINTDB_interpreter_state *state)
|
|||||||
(stop_index = cmd_find (state->cmd,
|
(stop_index = cmd_find (state->cmd,
|
||||||
state->cmd[state->i]
|
state->cmd[state->i]
|
||||||
.details.gauger.label_stop)));
|
.details.gauger.label_stop)));
|
||||||
start = state->cmd[start_index].exposed.data.time;
|
start = *state->cmd[start_index].exposed.data.time;
|
||||||
stop = state->cmd[stop_index].exposed.data.time;
|
stop = *state->cmd[stop_index].exposed.data.time;
|
||||||
elapsed_ms = (start.tv_sec - stop.tv_sec) * 1000 +
|
elapsed = GNUNET_TIME_absolute_get_difference (start,
|
||||||
(start.tv_nsec - stop.tv_nsec) / 1000000;
|
stop);
|
||||||
|
ips = (1.0 * state->cmd[state->i].details.gauger.divide) / (elapsed.rel_value_us/1000000.0);
|
||||||
|
printf ("gauger data:%lu - %f\n", elapsed.rel_value_us, ips);
|
||||||
GAUGER ("MINTDB",
|
GAUGER ("MINTDB",
|
||||||
state->cmd[state->i].details.gauger.description,
|
state->cmd[state->i].details.gauger.description,
|
||||||
((1.0 * state->cmd[state->i].details.gauger.divide) / elapsed_ms) * 1000,
|
ips,
|
||||||
state->cmd[state->i].details.gauger.unit);
|
state->cmd[state->i].details.gauger.unit);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -181,7 +181,7 @@
|
|||||||
* @param _label the label of the command, used by other commands to reference it
|
* @param _label the label of the command, used by other commands to reference it
|
||||||
* @param _label_loop the label of the loop the array iterates over
|
* @param _label_loop the label of the loop the array iterates over
|
||||||
* @param _label_save the label of the command which outout is saved by this command
|
* @param _label_save the label of the command which outout is saved by this command
|
||||||
* @param _nb_saved the total number of tiems to be saved
|
* @param _nb_saved the total number of items to be saved
|
||||||
*/
|
*/
|
||||||
#define PERF_TALER_MINTDB_INIT_CMD_SAVE_ARRAY(_label, _label_loop, _label_save, _nb_saved) \
|
#define PERF_TALER_MINTDB_INIT_CMD_SAVE_ARRAY(_label, _label_loop, _label_save, _nb_saved) \
|
||||||
{ \
|
{ \
|
||||||
@ -216,7 +216,7 @@
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Inserts informations about a denomination key in the database
|
* Inserts informations about a denomination key in the database
|
||||||
*
|
* Exposes a #PERF_TALER_MINTDB_DENOMINATION_INFO to be used by other commands
|
||||||
* @exposed #PERF_TALER_MINTDB_DENOMINATION_INFO
|
* @exposed #PERF_TALER_MINTDB_DENOMINATION_INFO
|
||||||
*
|
*
|
||||||
* @param _label the label of this command
|
* @param _label the label of this command
|
||||||
@ -232,7 +232,7 @@
|
|||||||
* 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_denom the label of the command prividing information about the denomination key
|
* @param _label_denom the label of the command providing information about the denomination key
|
||||||
*/
|
*/
|
||||||
#define PERF_TALER_MINTDB_INIT_CMD_GET_DENOMINATION(_label, _label_denom) \
|
#define PERF_TALER_MINTDB_INIT_CMD_GET_DENOMINATION(_label, _label_denom) \
|
||||||
{ \
|
{ \
|
||||||
@ -243,7 +243,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new reserve in the database
|
* Creates a new reserve in the database containing 1000 Euros
|
||||||
|
* Exposes a #PERF_TALER_MINTDB_RESERVE
|
||||||
*
|
*
|
||||||
* @exposed #PERF_TALER_MINTDB_RESERVE
|
* @exposed #PERF_TALER_MINTDB_RESERVE
|
||||||
*
|
*
|
||||||
@ -261,7 +262,7 @@
|
|||||||
* 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_reserve Source for the reserve to poll
|
* @param _label_reserve the reserve to poll
|
||||||
*/
|
*/
|
||||||
#define PERF_TALER_MINTDB_INIT_CMD_GET_RESERVE(_label, _label_reserve) \
|
#define PERF_TALER_MINTDB_INIT_CMD_GET_RESERVE(_label, _label_reserve) \
|
||||||
{ \
|
{ \
|
||||||
@ -293,7 +294,7 @@
|
|||||||
* @exposes #PERF_TALER_MINTDB_DEPOSIT
|
* @exposes #PERF_TALER_MINTDB_DEPOSIT
|
||||||
*
|
*
|
||||||
* @param _label the label of this command
|
* @param _label the label of this command
|
||||||
* @param _label_coin source of the coin used to pay
|
* @param _label_coin the coin used to pay
|
||||||
*/
|
*/
|
||||||
#define PERF_TALER_MINTDB_INIT_CMD_INSERT_DEPOSIT(_label, _label_coin) \
|
#define PERF_TALER_MINTDB_INIT_CMD_INSERT_DEPOSIT(_label, _label_coin) \
|
||||||
{ \
|
{ \
|
||||||
@ -308,7 +309,7 @@
|
|||||||
* Check if a deposit is in the database
|
* Check if a deposit is in the database
|
||||||
*
|
*
|
||||||
* @param _label the label of this command
|
* @param _label the label of this command
|
||||||
* @param _label_deposit the label of the deposit to use
|
* @param _label_deposit the deposit to use
|
||||||
*/
|
*/
|
||||||
#define PERF_TALER_MINTDB_INIT_CMD_GET_DEPOSIT(_label, _label_deposit) \
|
#define PERF_TALER_MINTDB_INIT_CMD_GET_DEPOSIT(_label, _label_deposit) \
|
||||||
{ \
|
{ \
|
||||||
@ -344,7 +345,7 @@
|
|||||||
* 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_coin the label of the command providing the coin to check
|
* @param _label_coin the coin to check
|
||||||
*/
|
*/
|
||||||
#define PERF_TALER_MINTDB_INIT_CMD_GET_WITHDRAW(_label, _label_coin) \
|
#define PERF_TALER_MINTDB_INIT_CMD_GET_WITHDRAW(_label, _label_coin) \
|
||||||
{ \
|
{ \
|
||||||
@ -356,17 +357,15 @@
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Composit command representing a coin withdrawal
|
* The /withdraw/sign api call
|
||||||
* It first access the reserve history to check the ballance
|
|
||||||
* and hen emits a coin.
|
|
||||||
*
|
*
|
||||||
* @exposes #PERF_TALER_MINTDB_COIN
|
* Exposes #PERF_TALER_MINTDB_COIN
|
||||||
*
|
*
|
||||||
* @param _label the label of this command
|
* @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
|
* @param _label_dki the denomination of the created coin
|
||||||
|
* @param _label_reserve the reserve used to provide currency
|
||||||
*/
|
*/
|
||||||
#define PERF_TALER_MINTDB_INIT_CMD_WITHDRAWAL(_label, _label_dki, _label_reserve) \
|
#define PERF_TALER_MINTDB_INIT_CMD_WITHDRAW_SIGN(_label, _label_dki, _label_reserve) \
|
||||||
PERF_TALER_MINTDB_CMD_GET_RESERVE_HISTORY("", _label_reserve), \
|
PERF_TALER_MINTDB_CMD_GET_RESERVE_HISTORY("", _label_reserve), \
|
||||||
PERF_TALER_MINTDB_CMD_INSERT_WITHDRAW(_label, _label_dki, _label_reserve),
|
PERF_TALER_MINTDB_CMD_INSERT_WITHDRAW(_label, _label_dki, _label_reserve),
|
||||||
|
|
||||||
@ -382,6 +381,7 @@ enum PERF_TALER_MINTDB_Type
|
|||||||
PERF_TALER_MINTDB_COIN,
|
PERF_TALER_MINTDB_COIN,
|
||||||
PERF_TALER_MINTDB_RESERVE,
|
PERF_TALER_MINTDB_RESERVE,
|
||||||
PERF_TALER_MINTDB_DENOMINATION_INFO,
|
PERF_TALER_MINTDB_DENOMINATION_INFO,
|
||||||
|
PERF_TALER_MINTDB_REFRESH_HASH
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -399,7 +399,7 @@ struct PERF_TALER_MINTDB_Data
|
|||||||
union PERF_TALER_MINTDB_Memory
|
union PERF_TALER_MINTDB_Memory
|
||||||
{
|
{
|
||||||
/** #PERF_TALER_MINTDB_TIME */
|
/** #PERF_TALER_MINTDB_TIME */
|
||||||
struct timespec time;
|
struct GNUNET_TIME_Absolute *time;
|
||||||
/** #PERF_TALER_MINTDB_DEPOSIT */
|
/** #PERF_TALER_MINTDB_DEPOSIT */
|
||||||
struct TALER_MINTDB_Deposit *deposit;
|
struct TALER_MINTDB_Deposit *deposit;
|
||||||
/** #PERF_TALER_MINTDB_COIN */
|
/** #PERF_TALER_MINTDB_COIN */
|
||||||
@ -408,6 +408,8 @@ struct PERF_TALER_MINTDB_Data
|
|||||||
struct PERF_TALER_MINTDB_Reserve *reserve;
|
struct PERF_TALER_MINTDB_Reserve *reserve;
|
||||||
/** #PERF_TALER_MINTDB_DENOMINATION_INFO */
|
/** #PERF_TALER_MINTDB_DENOMINATION_INFO */
|
||||||
struct TALER_MINTDB_DenominationKeyIssueInformation *dki;
|
struct TALER_MINTDB_DenominationKeyIssueInformation *dki;
|
||||||
|
/** #PERF_TALER_MINTDB_REFRESH_HASH */
|
||||||
|
struct GNUNET_HashCode session_hash;
|
||||||
} data;
|
} data;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -601,7 +603,6 @@ enum PERF_TALER_MINTDB_CMD_Name
|
|||||||
*/
|
*/
|
||||||
union PERF_TALER_MINTDB_CMD_Details
|
union PERF_TALER_MINTDB_CMD_Details
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Extra data requiered for the #PERF_TALER_MINTDB_CMD_LOOP command
|
* Extra data requiered for the #PERF_TALER_MINTDB_CMD_LOOP command
|
||||||
*/
|
*/
|
||||||
@ -801,7 +802,7 @@ union PERF_TALER_MINTDB_CMD_Details
|
|||||||
} insert_withdraw;
|
} insert_withdraw;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* data requiered for the #PERF_TALER_MINTDB_CMD_GET_WITHDRAW
|
||||||
*/
|
*/
|
||||||
struct PERF_TALER_MINTDB_CMD_getWithdraw
|
struct PERF_TALER_MINTDB_CMD_getWithdraw
|
||||||
{
|
{
|
||||||
@ -810,6 +811,66 @@ union PERF_TALER_MINTDB_CMD_Details
|
|||||||
*/
|
*/
|
||||||
const char *label_coin;
|
const char *label_coin;
|
||||||
} get_withdraw;
|
} get_withdraw;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Data requiered for the #PERF_TALER_MINTDB_CMD_GET_COIN_TRANSACTION command
|
||||||
|
*/
|
||||||
|
struct PERF_TALER_MINTDB_CMD_getCoinTransactionDetails
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* The coin which history is checked
|
||||||
|
*/
|
||||||
|
const char *label_coin;
|
||||||
|
} get_coin_transaction;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Data requiered for the #PERF_TALER_MINTDB_CMD_GET_REFRESH_SESSION command
|
||||||
|
*/
|
||||||
|
struct PERF_TALER_MINTDB_CMD_getRefreshSessionDetails
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* label of the source of the hash of the session
|
||||||
|
*/
|
||||||
|
const char *label_hash;
|
||||||
|
} get_refresh_session;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Data requiered for the #PERF_TALER_MINTDB_CMD_INSERT_REFRESH_MELT command
|
||||||
|
*/
|
||||||
|
struct PERF_TALER_MINTDB_CMD_insertRefreshMeltDetails
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* The label of the hash of the refresh session
|
||||||
|
*/
|
||||||
|
const char *label_hash;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The label of the coin to melt
|
||||||
|
*/
|
||||||
|
const char *label_coin;
|
||||||
|
} insert_refresh_melt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Data requiered for the #PERF_TALER_MINTDB_CMD_GET_REFRESH_MELT command
|
||||||
|
*/
|
||||||
|
struct PERF_TALER_MINTDB_CMD_getRefreshMeltDetails
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* The label of the hash of the session
|
||||||
|
*/
|
||||||
|
const char *label_hash;
|
||||||
|
} get_refresh_melt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Data requiered for the #PERF_TALER_MINTDB_CMD_INSERT_REFRESH_ORDER command
|
||||||
|
*/
|
||||||
|
struct PERF_TALER_MINTDB_CMD_insertRefreshOrderDetails
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* The refresh session hash
|
||||||
|
*/
|
||||||
|
const char *label_hash;
|
||||||
|
} insert_refresh_order;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user