Finished work on database initialization
This commit is contained in:
parent
fddb73c62d
commit
d0a6b47099
@ -44,8 +44,7 @@ main (int argc, char ** argv)
|
|||||||
PERF_TALER_MINTDB_INIT_CMD_SAVE_ARRAY ("01 - save denomination",
|
PERF_TALER_MINTDB_INIT_CMD_SAVE_ARRAY ("01 - save denomination",
|
||||||
"01 - denomination loop",
|
"01 - denomination loop",
|
||||||
"01 - denomination",
|
"01 - denomination",
|
||||||
PERF_TALER_MINTDB_NB_DENOMINATION_SAVE,
|
PERF_TALER_MINTDB_NB_DENOMINATION_SAVE),
|
||||||
PERF_TALER_MINTDB_BLINDCOIN),
|
|
||||||
PERF_TALER_MINTDB_INIT_CMD_END_LOOP ("01 - denomination loop end",
|
PERF_TALER_MINTDB_INIT_CMD_END_LOOP ("01 - denomination loop end",
|
||||||
"01 - denomination loop"),
|
"01 - denomination loop"),
|
||||||
PERF_TALER_MINTDB_INIT_CMD_DEBUG ("01 - init denomination complete"),
|
PERF_TALER_MINTDB_INIT_CMD_DEBUG ("01 - init denomination complete"),
|
||||||
@ -57,8 +56,7 @@ main (int argc, char ** argv)
|
|||||||
PERF_TALER_MINTDB_INIT_CMD_SAVE_ARRAY ("02 - save reserve",
|
PERF_TALER_MINTDB_INIT_CMD_SAVE_ARRAY ("02 - save reserve",
|
||||||
"02 - init reserve loop",
|
"02 - init reserve loop",
|
||||||
"02 - reserve",
|
"02 - reserve",
|
||||||
PERF_TALER_MINTDB_NB_RESERVE_SAVE,
|
PERF_TALER_MINTDB_NB_RESERVE_SAVE),
|
||||||
PERF_TALER_MINTDB_RESERVE),
|
|
||||||
PERF_TALER_MINTDB_INIT_CMD_END_LOOP ("02 - init reserve end loop",
|
PERF_TALER_MINTDB_INIT_CMD_END_LOOP ("02 - init reserve end loop",
|
||||||
"02 - init reserve loop"),
|
"02 - init reserve loop"),
|
||||||
PERF_TALER_MINTDB_INIT_CMD_DEBUG ("02 - reserve init complete"),
|
PERF_TALER_MINTDB_INIT_CMD_DEBUG ("02 - reserve init complete"),
|
||||||
@ -80,8 +78,7 @@ main (int argc, char ** argv)
|
|||||||
PERF_TALER_MINTDB_INIT_CMD_SAVE_ARRAY ("03 - blindcoin array",
|
PERF_TALER_MINTDB_INIT_CMD_SAVE_ARRAY ("03 - blindcoin array",
|
||||||
"03 - init withdraw loop",
|
"03 - init withdraw loop",
|
||||||
"03 - withdraw",
|
"03 - withdraw",
|
||||||
PERF_TALER_MINTDB_NB_WITHDRAW_SAVE,
|
PERF_TALER_MINTDB_NB_WITHDRAW_SAVE),
|
||||||
PERF_TALER_MINTDB_BLINDCOIN),
|
|
||||||
PERF_TALER_MINTDB_INIT_CMD_END_LOOP ("03 - withdraw init end loop",
|
PERF_TALER_MINTDB_INIT_CMD_END_LOOP ("03 - withdraw init end loop",
|
||||||
"03 - init withdraw loop"),
|
"03 - init withdraw loop"),
|
||||||
PERF_TALER_MINTDB_INIT_CMD_DEBUG ("03 - withdraw init complete"),
|
PERF_TALER_MINTDB_INIT_CMD_DEBUG ("03 - withdraw init complete"),
|
||||||
@ -90,14 +87,17 @@ main (int argc, char ** argv)
|
|||||||
PERF_TALER_MINTDB_INIT_CMD_LOOP ("04 - deposit init loop",
|
PERF_TALER_MINTDB_INIT_CMD_LOOP ("04 - deposit init loop",
|
||||||
PERF_TALER_MINTDB_NB_DEPOSIT_INIT),
|
PERF_TALER_MINTDB_NB_DEPOSIT_INIT),
|
||||||
PERF_TALER_MINTDB_INIT_CMD_START_TRANSACTION ("04 - start transaction"),
|
PERF_TALER_MINTDB_INIT_CMD_START_TRANSACTION ("04 - start transaction"),
|
||||||
|
PERF_TALER_MINTDB_INIT_CMD_LOAD_ARRAY ("04 - denomination load",
|
||||||
|
"04 - deposit init loop",
|
||||||
|
"01 - save denomination"),
|
||||||
|
|
||||||
PERF_TALER_MINTDB_INIT_CMD_INSERT_DEPOSIT ("04 - deposit",
|
PERF_TALER_MINTDB_INIT_CMD_INSERT_DEPOSIT ("04 - deposit",
|
||||||
"01 - denomination"),
|
"04 - denomination load"),
|
||||||
PERF_TALER_MINTDB_INIT_CMD_COMMIT_TRANSACTION ("04 - commit transaction"),
|
PERF_TALER_MINTDB_INIT_CMD_COMMIT_TRANSACTION ("04 - commit transaction"),
|
||||||
PERF_TALER_MINTDB_INIT_CMD_SAVE_ARRAY ("04 - deposit array",
|
PERF_TALER_MINTDB_INIT_CMD_SAVE_ARRAY ("04 - deposit array",
|
||||||
"04 - deposit init loop",
|
"04 - deposit init loop",
|
||||||
"04 - deposit",
|
"04 - deposit",
|
||||||
PERF_TALER_MINTDB_NB_DEPOSIT_SAVE,
|
PERF_TALER_MINTDB_NB_DEPOSIT_SAVE),
|
||||||
PERF_TALER_MINTDB_DEPOSIT),
|
|
||||||
PERF_TALER_MINTDB_INIT_CMD_END_LOOP ("04 - deposit init loop end",
|
PERF_TALER_MINTDB_INIT_CMD_END_LOOP ("04 - deposit init loop end",
|
||||||
"04 - deposit init loop"),
|
"04 - deposit init loop"),
|
||||||
PERF_TALER_MINTDB_INIT_CMD_DEBUG ("04 - deposit init complete"),
|
PERF_TALER_MINTDB_INIT_CMD_DEBUG ("04 - deposit init complete"),
|
||||||
|
@ -230,8 +230,6 @@ PERF_TALER_MINTDB_deposit_init (const struct TALER_MINTDB_DenominationKeyIssueIn
|
|||||||
GNUNET_CRYPTO_rsa_sign (dki->denom_priv.rsa_private_key,
|
GNUNET_CRYPTO_rsa_sign (dki->denom_priv.rsa_private_key,
|
||||||
&coin.coin_pub.eddsa_pub,
|
&coin.coin_pub.eddsa_pub,
|
||||||
sizeof (struct GNUNET_CRYPTO_EddsaPublicKey))));
|
sizeof (struct GNUNET_CRYPTO_EddsaPublicKey))));
|
||||||
|
|
||||||
GNUNET_free (eddsa_prvt);
|
|
||||||
}
|
}
|
||||||
{ //csig
|
{ //csig
|
||||||
struct u32_presign
|
struct u32_presign
|
||||||
@ -359,7 +357,6 @@ PERF_TALER_MINTDB_collectable_blindcoin_init (
|
|||||||
} unsigned_data;
|
} unsigned_data;
|
||||||
struct TALER_MINTDB_CollectableBlindcoin *coin;
|
struct TALER_MINTDB_CollectableBlindcoin *coin;
|
||||||
|
|
||||||
|
|
||||||
GNUNET_assert (NULL !=
|
GNUNET_assert (NULL !=
|
||||||
(coin = GNUNET_new (struct TALER_MINTDB_CollectableBlindcoin)));
|
(coin = GNUNET_new (struct TALER_MINTDB_CollectableBlindcoin)));
|
||||||
GNUNET_assert (NULL !=
|
GNUNET_assert (NULL !=
|
||||||
@ -376,7 +373,6 @@ PERF_TALER_MINTDB_collectable_blindcoin_init (
|
|||||||
GNUNET_CRYPTO_rsa_private_key_decode (buffer, size)));
|
GNUNET_CRYPTO_rsa_private_key_decode (buffer, size)));
|
||||||
GNUNET_free (buffer);
|
GNUNET_free (buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
GNUNET_assert (NULL !=
|
GNUNET_assert (NULL !=
|
||||||
(coin->denom_pub.rsa_public_key =
|
(coin->denom_pub.rsa_public_key =
|
||||||
GNUNET_CRYPTO_rsa_private_key_get_public (denomination_key)));
|
GNUNET_CRYPTO_rsa_private_key_get_public (denomination_key)));
|
||||||
@ -394,6 +390,9 @@ PERF_TALER_MINTDB_collectable_blindcoin_init (
|
|||||||
GNUNET_CRYPTO_rsa_sign (denomination_key,
|
GNUNET_CRYPTO_rsa_sign (denomination_key,
|
||||||
&random_int,
|
&random_int,
|
||||||
sizeof (random_int))));
|
sizeof (random_int))));
|
||||||
|
char *buffer;
|
||||||
|
GNUNET_CRYPTO_rsa_signature_encode (coin->sig.rsa_signature, &buffer);
|
||||||
|
free (buffer);
|
||||||
GNUNET_CRYPTO_hash_create_random (GNUNET_CRYPTO_QUALITY_WEAK,
|
GNUNET_CRYPTO_hash_create_random (GNUNET_CRYPTO_QUALITY_WEAK,
|
||||||
&coin->h_coin_envelope);
|
&coin->h_coin_envelope);
|
||||||
unsigned_data.purpose.size = htonl (sizeof (unsigned_data));
|
unsigned_data.purpose.size = htonl (sizeof (unsigned_data));
|
||||||
|
@ -50,6 +50,7 @@ struct PERF_TALER_MINTDB_interpreter_state
|
|||||||
unsigned int i;
|
unsigned int i;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Free the memory of @a data, with data of type @a type
|
* Free the memory of @a data, with data of type @a type
|
||||||
*/
|
*/
|
||||||
@ -89,7 +90,6 @@ data_free (union PERF_TALER_MINTDB_Data *data, enum PERF_TALER_MINTDB_Type type)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Finds the first command in cmd with the name search
|
* Finds the first command in cmd with the name search
|
||||||
*
|
*
|
||||||
@ -121,14 +121,25 @@ cmd_init (struct PERF_TALER_MINTDB_Cmd cmd[])
|
|||||||
switch (cmd[i].command)
|
switch (cmd[i].command)
|
||||||
{
|
{
|
||||||
case PERF_TALER_MINTDB_CMD_SAVE_ARRAY:
|
case PERF_TALER_MINTDB_CMD_SAVE_ARRAY:
|
||||||
// Allocation of memory for saving data
|
{
|
||||||
|
int save_label;
|
||||||
|
|
||||||
|
GNUNET_assert (GNUNET_SYSERR !=
|
||||||
|
(save_label = cmd_find (cmd,
|
||||||
|
cmd[i].details.save_array.label_save)));
|
||||||
|
/* Allocation of memory for saving data */
|
||||||
cmd[i].details.save_array.data_saved =
|
cmd[i].details.save_array.data_saved =
|
||||||
GNUNET_new_array (cmd[i].details.save_array.nb_saved,
|
GNUNET_new_array (cmd[i].details.save_array.nb_saved,
|
||||||
union PERF_TALER_MINTDB_Data);
|
union PERF_TALER_MINTDB_Data);
|
||||||
|
/* Getting the type saved from the given label */
|
||||||
|
cmd[i].details.save_array.type_saved =
|
||||||
|
cmd[save_label].exposed_type;
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PERF_TALER_MINTDB_CMD_LOAD_ARRAY:
|
case PERF_TALER_MINTDB_CMD_LOAD_ARRAY:
|
||||||
// Creating the permutation array to randomize the data order
|
/* Creating the permutation array to randomize the data order */
|
||||||
{
|
{
|
||||||
int save_index ;
|
int save_index ;
|
||||||
|
|
||||||
@ -141,7 +152,7 @@ cmd_init (struct PERF_TALER_MINTDB_Cmd cmd[])
|
|||||||
GNUNET_CRYPTO_random_permute (
|
GNUNET_CRYPTO_random_permute (
|
||||||
GNUNET_CRYPTO_QUALITY_WEAK,
|
GNUNET_CRYPTO_QUALITY_WEAK,
|
||||||
cmd[save_index].details.save_array.nb_saved)));
|
cmd[save_index].details.save_array.nb_saved)));
|
||||||
// Initializing the type based on the type of the saved array
|
/* Initializing the type based on the type of the saved array */
|
||||||
cmd[i].exposed_type = cmd[save_index].details.save_array.type_saved;
|
cmd[i].exposed_type = cmd[save_index].details.save_array.type_saved;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -215,14 +226,14 @@ interpret_end_loop (struct PERF_TALER_MINTDB_interpreter_state *state)
|
|||||||
}
|
}
|
||||||
|
|
||||||
state->cmd[jump].details.loop.curr_iteration++;
|
state->cmd[jump].details.loop.curr_iteration++;
|
||||||
// If the loop is not finished
|
/* If the loop is not finished */
|
||||||
if (state->cmd[jump].details.loop.max_iterations >
|
if (state->cmd[jump].details.loop.max_iterations >
|
||||||
state->cmd[jump].details.loop.curr_iteration)
|
state->cmd[jump].details.loop.curr_iteration)
|
||||||
{
|
{
|
||||||
// jump back to the start
|
/* jump back to the start */
|
||||||
state->i = jump;
|
state->i = jump;
|
||||||
}else{
|
}else{
|
||||||
// Reset the loop counter and continue running
|
/* Reset the loop counter and continue running */
|
||||||
state->cmd[jump].details.loop.curr_iteration = 0;
|
state->cmd[jump].details.loop.curr_iteration = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -238,8 +249,6 @@ interpret_save_array (struct PERF_TALER_MINTDB_interpreter_state *state)
|
|||||||
int loop_index, save_index;
|
int loop_index, save_index;
|
||||||
unsigned int selection_chance;
|
unsigned int selection_chance;
|
||||||
|
|
||||||
// Array initialization on first loop iteration
|
|
||||||
// Alows for nested loops
|
|
||||||
GNUNET_assert (GNUNET_SYSERR !=
|
GNUNET_assert (GNUNET_SYSERR !=
|
||||||
(loop_index = cmd_find (state->cmd,
|
(loop_index = cmd_find (state->cmd,
|
||||||
state->cmd[state->i]
|
state->cmd[state->i]
|
||||||
@ -248,19 +257,21 @@ interpret_save_array (struct PERF_TALER_MINTDB_interpreter_state *state)
|
|||||||
(save_index = cmd_find (state->cmd,
|
(save_index = cmd_find (state->cmd,
|
||||||
state->cmd[state->i]
|
state->cmd[state->i]
|
||||||
.details.save_array.label_save)));
|
.details.save_array.label_save)));
|
||||||
if (0 == state->cmd[loop_index].details.loop.curr_iteration)
|
/* Array initialization on first loop iteration
|
||||||
|
Alows for nested loops */
|
||||||
|
if (0 == state->cmd[loop_index].details.loop.curr_iteration)
|
||||||
{
|
{
|
||||||
state->cmd[state->i].details.save_array.index = 0;
|
state->cmd[state->i].details.save_array.index = 0;
|
||||||
}
|
}
|
||||||
// The probobility distribution of the saved items will be a little biased
|
/* The probobility distribution of the saved items will be a little biased
|
||||||
// against the few last items but it should not be a big problem.
|
against the few last items but it should not be a big problem. */
|
||||||
selection_chance = state->cmd[loop_index].details.loop.max_iterations /
|
selection_chance = state->cmd[loop_index].details.loop.max_iterations /
|
||||||
state->cmd[state->i].details.save_array.nb_saved;
|
state->cmd[state->i].details.save_array.nb_saved;
|
||||||
/*
|
/*
|
||||||
* If the remaining sapce is equal to the remaining number of
|
* If the remaining space is equal to the remaining number of
|
||||||
* iterations, the item is automaticly saved.
|
* iterations, the item is automaticly saved.
|
||||||
*
|
*
|
||||||
* Else it is saved only if rdn is 0
|
* Else it is saved only if the random numbre generated is 0
|
||||||
*/
|
*/
|
||||||
if ((0 < (state->cmd[state->i].details.save_array.nb_saved -
|
if ((0 < (state->cmd[state->i].details.save_array.nb_saved -
|
||||||
state->cmd[state->i].details.save_array.index)) &&
|
state->cmd[state->i].details.save_array.index)) &&
|
||||||
@ -311,14 +322,17 @@ interpret_save_array (struct PERF_TALER_MINTDB_interpreter_state *state)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run when the current command is LOAD_ARRAY
|
||||||
|
* Get data from a SAVE_ARRAY and exposes a copy
|
||||||
|
*/
|
||||||
static void
|
static void
|
||||||
interpret_load_array (struct PERF_TALER_MINTDB_interpreter_state *state)
|
interpret_load_array (struct PERF_TALER_MINTDB_interpreter_state *state)
|
||||||
{
|
{
|
||||||
unsigned int loop_iter;
|
unsigned int loop_iter;
|
||||||
int loop_index, save_index;
|
int loop_index, save_index;
|
||||||
union PERF_TALER_MINTDB_Data zero = {0};
|
|
||||||
union PERF_TALER_MINTDB_Data *loaded_data;
|
union PERF_TALER_MINTDB_Data *loaded_data;
|
||||||
|
|
||||||
GNUNET_assert (GNUNET_SYSERR !=
|
GNUNET_assert (GNUNET_SYSERR !=
|
||||||
(loop_index = cmd_find (state->cmd,
|
(loop_index = cmd_find (state->cmd,
|
||||||
state->cmd[state->i]
|
state->cmd[state->i]
|
||||||
@ -330,16 +344,18 @@ interpret_load_array (struct PERF_TALER_MINTDB_interpreter_state *state)
|
|||||||
loop_iter = state->cmd[loop_index].details.loop.curr_iteration;
|
loop_iter = state->cmd[loop_index].details.loop.curr_iteration;
|
||||||
{
|
{
|
||||||
int i, quotient;
|
int i, quotient;
|
||||||
|
|
||||||
|
/* in case the iteration number is higher than the amount saved,
|
||||||
|
* the number is run several times in the permutation array */
|
||||||
quotient = loop_iter / state->cmd[save_index].details.save_array.nb_saved;
|
quotient = loop_iter / state->cmd[save_index].details.save_array.nb_saved;
|
||||||
loop_iter = loop_iter % state->cmd[save_index].details.save_array.nb_saved;
|
loop_iter = loop_iter % state->cmd[save_index].details.save_array.nb_saved;
|
||||||
for (i=0; i<=quotient; i++){
|
for (i=0; i<=quotient; i++)
|
||||||
loop_iter = state->cmd[state->i].details.load_array.permutation[loop_iter];
|
loop_iter = state->cmd[state->i].details.load_array.permutation[loop_iter];
|
||||||
}
|
|
||||||
}
|
}
|
||||||
/* Extracting the data from the loop_indexth indice in save_index
|
/* Extracting the data from the loop_indexth indice in save_index
|
||||||
* array.
|
* array.
|
||||||
*/
|
*/
|
||||||
loaded_data = &state->cmd[save_index].details.save_array.data_saved[loop_index];
|
loaded_data = &state->cmd[save_index].details.save_array.data_saved[loop_iter];
|
||||||
switch (state->cmd[state->i].exposed_type)
|
switch (state->cmd[state->i].exposed_type)
|
||||||
{
|
{
|
||||||
case PERF_TALER_MINTDB_TIME:
|
case PERF_TALER_MINTDB_TIME:
|
||||||
@ -347,26 +363,32 @@ interpret_load_array (struct PERF_TALER_MINTDB_interpreter_state *state)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case PERF_TALER_MINTDB_DEPOSIT:
|
case PERF_TALER_MINTDB_DEPOSIT:
|
||||||
state->cmd[state->i].exposed.deposit = loaded_data->deposit;
|
state->cmd[state->i].exposed.deposit =
|
||||||
|
PERF_TALER_MINTDB_deposit_copy (loaded_data->deposit);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PERF_TALER_MINTDB_BLINDCOIN:
|
case PERF_TALER_MINTDB_BLINDCOIN:
|
||||||
state->cmd[state->i].exposed.blindcoin = loaded_data->blindcoin;
|
state->cmd[state->i].exposed.blindcoin =
|
||||||
|
PERF_TALER_MINTDB_collectable_blindcoin_copy (loaded_data->blindcoin);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PERF_TALER_MINTDB_RESERVE:
|
case PERF_TALER_MINTDB_RESERVE:
|
||||||
state->cmd[state->i].exposed.reserve = loaded_data->reserve;
|
state->cmd[state->i].exposed.reserve =
|
||||||
|
PERF_TALER_MINTDB_reserve_copy (loaded_data->reserve);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PERF_TALER_MINTDB_DENOMINATION_INFO:
|
case PERF_TALER_MINTDB_DENOMINATION_INFO:
|
||||||
state->cmd[state->i].exposed.dki = loaded_data->dki;
|
state->cmd[state->i].exposed.dki =
|
||||||
|
PERF_TALER_MINTDB_denomination_copy (loaded_data->dki);
|
||||||
|
break;
|
||||||
|
|
||||||
case PERF_TALER_MINTDB_COIN_INFO:
|
case PERF_TALER_MINTDB_COIN_INFO:
|
||||||
state->cmd[state->i].exposed.cpi = loaded_data->cpi;
|
state->cmd[state->i].exposed.cpi = loaded_data->cpi;
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
*loaded_data = zero;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -472,7 +494,7 @@ interpret (struct PERF_TALER_MINTDB_interpreter_state *state)
|
|||||||
{
|
{
|
||||||
int source_index;
|
int source_index;
|
||||||
struct TALER_MINTDB_Deposit *deposit;
|
struct TALER_MINTDB_Deposit *deposit;
|
||||||
|
|
||||||
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]
|
||||||
@ -511,7 +533,7 @@ interpret (struct PERF_TALER_MINTDB_interpreter_state *state)
|
|||||||
{
|
{
|
||||||
int source_index;
|
int source_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,
|
(source_index = cmd_find (state->cmd,
|
||||||
state->cmd[state->i]
|
state->cmd[state->i]
|
||||||
@ -560,7 +582,7 @@ interpret (struct PERF_TALER_MINTDB_interpreter_state *state)
|
|||||||
{
|
{
|
||||||
int dki_index, reserve_index;
|
int dki_index, reserve_index;
|
||||||
struct TALER_MINTDB_CollectableBlindcoin *blindcoin ;
|
struct TALER_MINTDB_CollectableBlindcoin *blindcoin ;
|
||||||
|
|
||||||
GNUNET_assert (GNUNET_SYSERR !=
|
GNUNET_assert (GNUNET_SYSERR !=
|
||||||
(dki_index = cmd_find (
|
(dki_index = cmd_find (
|
||||||
state->cmd,
|
state->cmd,
|
||||||
|
@ -128,7 +128,7 @@
|
|||||||
* Extracts @a _nb_saved items of type @a _save_type
|
* Extracts @a _nb_saved items of type @a _save_type
|
||||||
* from the command @a _label_save during the loop @a _label_loop
|
* from the command @a _label_save during the loop @a _label_loop
|
||||||
*/
|
*/
|
||||||
#define PERF_TALER_MINTDB_INIT_CMD_SAVE_ARRAY(_label, _label_loop, _label_save, _nb_saved, _save_type) \
|
#define PERF_TALER_MINTDB_INIT_CMD_SAVE_ARRAY(_label, _label_loop, _label_save, _nb_saved) \
|
||||||
{ \
|
{ \
|
||||||
.command = PERF_TALER_MINTDB_CMD_SAVE_ARRAY, \
|
.command = PERF_TALER_MINTDB_CMD_SAVE_ARRAY, \
|
||||||
.label = _label, \
|
.label = _label, \
|
||||||
@ -137,7 +137,6 @@
|
|||||||
.label_loop = _label_loop, \
|
.label_loop = _label_loop, \
|
||||||
.label_save = _label_save, \
|
.label_save = _label_save, \
|
||||||
.nb_saved = _nb_saved, \
|
.nb_saved = _nb_saved, \
|
||||||
.type_saved = _save_type \
|
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,17 +22,17 @@
|
|||||||
#define __PERF_TALER_MINTDB__VALUES_H__
|
#define __PERF_TALER_MINTDB__VALUES_H__
|
||||||
|
|
||||||
|
|
||||||
#define PERF_TALER_MINTDB_NB_DENOMINATION_INIT 100
|
#define PERF_TALER_MINTDB_NB_DENOMINATION_INIT 10
|
||||||
#define PERF_TALER_MINTDB_NB_DENOMINATION_SAVE 100
|
#define PERF_TALER_MINTDB_NB_DENOMINATION_SAVE 10
|
||||||
|
|
||||||
#define PERF_TALER_MINTDB_NB_RESERVE_INIT 10000
|
#define PERF_TALER_MINTDB_NB_RESERVE_INIT 100
|
||||||
#define PERF_TALER_MINTDB_NB_RESERVE_SAVE 1000
|
#define PERF_TALER_MINTDB_NB_RESERVE_SAVE 10
|
||||||
|
|
||||||
|
|
||||||
#define PERF_TALER_MINTDB_NB_DEPOSIT_INIT 100000
|
#define PERF_TALER_MINTDB_NB_DEPOSIT_INIT 1000
|
||||||
#define PERF_TALER_MINTDB_NB_DEPOSIT_SAVE 1000
|
#define PERF_TALER_MINTDB_NB_DEPOSIT_SAVE 10
|
||||||
|
|
||||||
|
|
||||||
#define PERF_TALER_MINTDB_NB_WITHDRAW_INIT 100000
|
#define PERF_TALER_MINTDB_NB_WITHDRAW_INIT 100
|
||||||
#define PERF_TALER_MINTDB_NB_WITHDRAW_SAVE 1000
|
#define PERF_TALER_MINTDB_NB_WITHDRAW_SAVE 10
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user