Skip to content
Snippets Groups Projects
Commit e8b6fa89 authored by Aleksandr Lysikov's avatar Aleksandr Lysikov
Browse files

fixed dap_chain_cs_create()

parent 741f91e8
No related branches found
No related tags found
No related merge requests found
...@@ -117,8 +117,9 @@ void dap_chain_cs_add (const char * a_cs_str, dap_chain_callback_new_cfg_t a_ca ...@@ -117,8 +117,9 @@ void dap_chain_cs_add (const char * a_cs_str, dap_chain_callback_new_cfg_t a_ca
int dap_chain_cs_create(dap_chain_t * a_chain, dap_config_t * a_chain_cfg) int dap_chain_cs_create(dap_chain_t * a_chain, dap_config_t * a_chain_cfg)
{ {
dap_chain_callback_new_cfg_item_t *l_item = NULL; dap_chain_callback_new_cfg_item_t *l_item = NULL;
const char *l_consensus = dap_config_get_item_str( a_chain_cfg, "chain", "consensus");
HASH_FIND_STR(s_cs_callbacks,dap_config_get_item_str( a_chain_cfg, "chain", "consensus"), l_item ); if(l_consensus)
HASH_FIND_STR(s_cs_callbacks, l_consensus, l_item );
if ( l_item ) { if ( l_item ) {
log_it(L_NOTICE,"Consensus \"%s\" found, prepare to parse config file",l_item->name ); log_it(L_NOTICE,"Consensus \"%s\" found, prepare to parse config file",l_item->name );
l_item->callback_init( a_chain, a_chain_cfg); l_item->callback_init( a_chain, a_chain_cfg);
......
...@@ -153,70 +153,6 @@ dap_ledger_t* dap_chain_ledger_create(uint16_t a_check_flags) ...@@ -153,70 +153,6 @@ dap_ledger_t* dap_chain_ledger_create(uint16_t a_check_flags)
return l_ledger; //dap_chain_ledger_load(l_ledger, "kelvin-testnet", "plasma"); return l_ledger; //dap_chain_ledger_load(l_ledger, "kelvin-testnet", "plasma");
} }
static int compare_datum_items(const void * l_a, const void * l_b)
{
dap_chain_datum_t *l_item_a = (dap_chain_datum_t*) l_a;
dap_chain_datum_t *l_item_b = (dap_chain_datum_t*) l_b;
if(l_item_a->header.ts_create == l_item_b->header.ts_create)
return 0;
if(l_item_a->header.ts_create < l_item_b->header.ts_create)
return -1;
return 1;
}
/**
* Load ledger from mempool
*
* return 0 if OK otherwise negative error code
*/
int dap_chain_ledger_load(dap_ledger_t *a_ledger, const char *a_net_name, const char *a_chain_name)
{
// protect from reloading
if(dap_chain_ledger_count(a_ledger) > 0)
return 0;
dap_list_t *l_datum_list = NULL, *l_list_tmp = NULL;
// Read first transaction mempool group name
dap_chain_net_t *l_net = dap_chain_net_by_name(a_net_name);
dap_chain_t * l_chain_base_tx = (l_net) ? dap_chain_net_get_chain_by_name(l_net, a_chain_name) : NULL;
char * l_gdb_group_mempool_base_tx =
(l_chain_base_tx) ? dap_chain_net_get_gdb_group_mempool(l_chain_base_tx) : NULL;
// Read first transaction in mempool_groups from a_mempool_group_names_list
size_t l_data_size = 0;
dap_global_db_obj_t **data_ft = NULL;
if(l_gdb_group_mempool_base_tx) {
data_ft = dap_chain_global_db_gr_load(l_gdb_group_mempool_base_tx, &l_data_size);
// make list of datums
for(size_t i = 0; i < l_data_size; i++) {
l_datum_list = dap_list_prepend(l_datum_list, data_ft[i]->value);
}
}
// Read the entire database into an array of size bytes
dap_global_db_obj_t **data = dap_chain_global_db_gr_load(c_dap_datum_mempool_gdb_group, &l_data_size);
// make list of datums
for(size_t i = 0; i < l_data_size; i++) {
l_datum_list = dap_list_prepend(l_datum_list, data[i]->value);
}
// sort list by time
l_datum_list = dap_list_sort(l_datum_list, (dap_callback_compare_t) compare_datum_items);
l_list_tmp = l_datum_list;
// add datum_tx from list to ledger
while(l_list_tmp) {
dap_chain_datum_t *l_datum = (dap_chain_datum_t*) l_list_tmp->data;
if(l_datum->header.type_id == DAP_CHAIN_DATUM_TX) {
dap_chain_datum_tx_t *l_tx = (dap_chain_datum_tx_t*) l_datum->data;
if(dap_chain_datum_tx_get_size(l_tx) == l_datum->header.data_size)
dap_chain_ledger_tx_add(a_ledger,l_tx);
}
l_list_tmp = dap_list_next(l_list_tmp);
}
dap_chain_global_db_objs_delete(data);
dap_list_free(l_datum_list);
return 0;
}
/** /**
* @brief dap_chain_ledger_token_emission_add * @brief dap_chain_ledger_token_emission_add
* @param a_token_emission * @param a_token_emission
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment