Skip to content
Snippets Groups Projects
Commit 54a6e5ae authored by Constantin P.'s avatar Constantin P. 💬
Browse files

Merge branch 'feature-12797' into 'master'

Feature 12797

See merge request !1824
parents cb6634c7 e02ac7e5
No related branches found
No related tags found
1 merge request!1824Feature 12797
Pipeline #45527 passed with stage
in 13 minutes and 40 seconds
......@@ -494,7 +494,7 @@ int dap_chain_cell_load(dap_chain_t *a_chain, dap_chain_cell_t *a_cell)
break;
}
l_pos += sizeof(uint64_t) + ( l_read = fread((void*)l_element, 1, l_el_size, a_cell->file_storage) );
a_chain->load_progress = (int)((double)l_pos/l_full_size * 100 + 0.5);
a_chain->load_progress = (int)((float)l_pos/l_full_size * 100 + 0.5);
if (l_read != l_el_size) {
log_it(L_ERROR, "Read only %lu of %zu bytes, stop cell loading", l_read, l_el_size);
DAP_DELETE(l_element);
......
......@@ -703,6 +703,28 @@ static dap_chain_net_t *s_net_new(const char *a_net_name, dap_config_t *a_cfg)
return l_ret;
}
bool s_net_disk_load_notify_callback(UNUSED_ARG void *a_arg) {
json_object *json_obj = json_object_new_object();
json_object_object_add(json_obj, "class", json_object_new_string("nets_init"));
json_object *l_jobj_nets = json_object_new_object();
for (dap_chain_net_t *net = s_nets_by_name; net; net = net->hh.next) {
json_object *json_chains = json_object_new_object();
for (dap_chain_t *l_chain = net->pub.chains; l_chain; l_chain = l_chain->next) {
json_object *l_jobj_chain_info = json_object_new_object();
json_object_object_add(l_jobj_chain_info, "count_atoms", json_object_new_int(l_chain->callback_count_atom(l_chain)));
json_object_object_add(l_jobj_chain_info, "load_process", json_object_new_int(l_chain->load_progress));
json_object_object_add(json_chains, l_chain->name, l_jobj_chain_info);
log_it(L_DEBUG, "Loading net \"%s\", chain \"%s\", ID 0x%016"DAP_UINT64_FORMAT_x " [%d%%]",
net->pub.name, l_chain->name, l_chain->id.uint64, l_chain->load_progress);
}
json_object_object_add(l_jobj_nets, net->pub.name, json_chains);
}
json_object_object_add(json_obj, "nets", l_jobj_nets);
dap_notify_server_send_mt(json_object_get_string(json_obj));
json_object_put(json_obj);
return true;
}
/**
* @brief
* load network config settings
......@@ -716,11 +738,13 @@ void dap_chain_net_load_all()
pthread_mutex_unlock(&s_net_cond_lock);
return;
}
dap_timerfd_t *l_load_notify_timer = dap_timerfd_start(5000, (dap_timerfd_callback_t)s_net_disk_load_notify_callback, NULL);
for (dap_chain_net_t *net = s_nets_by_name; net; net = net->hh.next)
dap_proc_thread_callback_add(NULL, s_net_load, net);
while (s_net_loading_count)
pthread_cond_wait(&s_net_cond, &s_net_cond_lock);
pthread_mutex_unlock(&s_net_cond_lock);
dap_timerfd_delete_mt(l_load_notify_timer->worker, l_load_notify_timer->esocket_uuid);
}
dap_string_t* dap_cli_list_net()
......
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