diff --git a/modules/chain/dap_chain.c b/modules/chain/dap_chain.c index 5c5fdf98f8c74488bcb757e94b24a23a516c3584..8b1652a1795b9437658bfbb0e68060bc3f8da939 100644 --- a/modules/chain/dap_chain.c +++ b/modules/chain/dap_chain.c @@ -112,7 +112,7 @@ dap_chain_t *dap_chain_create(const char *a_chain_net_name, const char *a_chain_ .net_id = a_chain_net_id, .name = dap_strdup(a_chain_name), .net_name = dap_strdup(a_chain_net_name), - .is_mapped = dap_config_get_item_bool_default(g_config, "ledger", "mapped", false), + .is_mapped = dap_config_get_item_bool_default(g_config, "ledger", "mapped", true), .cell_rwlock = PTHREAD_RWLOCK_INITIALIZER, .atom_notifiers = NULL }; @@ -584,10 +584,12 @@ int dap_chain_save_all(dap_chain_t *l_chain) bool download_notify_callback(dap_chain_t* a_chain) { json_object* l_chain_info = json_object_new_object(); - json_object_object_add(l_chain_info, "net_name", json_object_new_string(a_chain->net_name)); + json_object_object_add(l_chain_info, "net_id", json_object_new_uint64(a_chain->net_id.uint64)); + json_object_object_add(l_chain_info, "chain_id", json_object_new_uint64(a_chain->id.uint64)); + json_object_object_add(l_chain_info, "cell_id", json_object_new_uint64(a_chain->active_cell_id.uint64)); json_object_object_add(l_chain_info, "download_percentage", json_object_new_int(a_chain->download_percentage)); dap_notify_server_send_mt(l_chain_info); - log_it(L_DEBUG, "Download notify: net_name: %s download:%d%c", a_chain->net_name, a_chain->download_percentage, '%'); + log_it(L_DEBUG, "Download notify: net_name: %s; chain_id: %d; download:%d%c", a_chain->net_name, a_chain->id.uint64, a_chain->download_percentage, '%'); json_object_put(l_chain_info); return true; } diff --git a/modules/chain/dap_chain_cell.c b/modules/chain/dap_chain_cell.c index a7795396252bb27e50a196fc6a44035fccc6f59a..00e86333e4437539ae782b14b69bc75165ab734f 100644 --- a/modules/chain/dap_chain_cell.c +++ b/modules/chain/dap_chain_cell.c @@ -439,12 +439,11 @@ int dap_chain_cell_load(dap_chain_t *a_chain, dap_chain_cell_t *a_cell) uint64_t q = 0; if (a_chain->is_mapped) { a_cell->map_pos = a_cell->map + sizeof(dap_chain_cell_file_header_t); - for ( uint64_t l_el_size = 0; l_pos < l_size; ++q, l_pos += l_el_size + sizeof(uint64_t) ) { + for ( uint64_t l_el_size = 0; l_pos < l_size; ++q, l_pos += l_el_size + sizeof(uint64_t), a_chain->download_percentage = (int)((double)l_pos/l_size * 100 + 0.5)) { size_t space_left = (size_t)( a_cell->map_end - a_cell->map_pos ); if ( space_left < sizeof(uint64_t) || (space_left - sizeof(uint64_t)) < *(uint64_t*)a_cell->map_pos ) if ( s_cell_map_new_volume(a_cell, l_pos) ) break; - a_chain->download_percentage = (int)((double)l_pos/l_size * 100 + 0.5); l_el_size = *(uint64_t*)a_cell->map_pos; dap_hash_fast_t l_atom_hash; dap_chain_atom_ptr_t l_atom = (dap_chain_atom_ptr_t)(a_cell->map_pos += sizeof(uint64_t)); diff --git a/modules/chain/include/dap_chain.h b/modules/chain/include/dap_chain.h index 485a61745c85a061b54d447652aa691eaeaa120b..7577c93488da6f21585d4b3f3205328042c87b8d 100644 --- a/modules/chain/include/dap_chain.h +++ b/modules/chain/include/dap_chain.h @@ -140,7 +140,7 @@ typedef struct dap_chain { char *net_name; bool is_datum_pool_proc; bool is_mapped; - size_t download_percentage; + atomic_int download_percentage; // Nested cells (hashtab by cell_id) dap_chain_cell_t *cells; dap_chain_cell_id_t active_cell_id; diff --git a/modules/net/dap_chain_ledger.c b/modules/net/dap_chain_ledger.c index bc060b1ca5b6949023e3cec1896aabd813fb579f..40ccfc136e1dfa1beffbe2e63f8a36089f47c19a 100644 --- a/modules/net/dap_chain_ledger.c +++ b/modules/net/dap_chain_ledger.c @@ -585,7 +585,7 @@ static dap_ledger_t * dap_ledger_handle_new(void) (dap_timer_callback_t)s_threshold_txs_free, l_ledger); l_ledger_pvt->threshold_emissions_free_timer = dap_interval_timer_create(s_threshold_free_timer_tick, (dap_timer_callback_t) s_threshold_emission_free, l_ledger); - l_ledger_pvt->mapped = dap_config_get_item_bool_default(g_config, "ledger", "mapped", false); + l_ledger_pvt->mapped = dap_config_get_item_bool_default(g_config, "ledger", "mapped", true); return l_ledger; }