From fecbe06b772bab73c815840904009532c6d03b27 Mon Sep 17 00:00:00 2001 From: "daniil.frolov" <daniil.frolov@demlabs.net> Date: Thu, 22 Aug 2024 19:39:51 +0700 Subject: [PATCH] Finish development [+] Add sort staring after swithing from sync state --- modules/net/dap_chain_net.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c index e5a6734204..3011975798 100644 --- a/modules/net/dap_chain_net.c +++ b/modules/net/dap_chain_net.c @@ -677,6 +677,8 @@ static bool s_net_states_proc(void *a_arg) dap_chain_net_pvt_t *l_net_pvt = PVT(l_net); assert(l_net_pvt); if (l_net_pvt->state_target == NET_STATE_OFFLINE) { + if(l_net_pvt->state == NET_STATE_SYNC_CHAINS) + dap_leger_load_end(l_net->pub.ledger); l_net_pvt->state = NET_STATE_OFFLINE; } @@ -686,8 +688,11 @@ static bool s_net_states_proc(void *a_arg) log_it(L_NOTICE,"%s.state: NET_STATE_OFFLINE", l_net->pub.name); // delete all links if ( l_net_pvt->state_target != NET_STATE_OFFLINE ){ + dap_chain_net_state_t l_prev_state = l_net_pvt->state; l_net_pvt->state = NET_STATE_LINKS_PREPARE; l_repeat_after_exit = true; + if(l_prev_state == NET_STATE_SYNC_CHAINS) + dap_leger_load_end(l_net->pub.ledger); } l_net_pvt->last_sync = 0; } break; @@ -1797,6 +1802,8 @@ void dap_chain_net_deinit() void dap_chain_net_delete(dap_chain_net_t *a_net) { // Synchronously going to offline state + if(PVT(a_net)->state == NET_STATE_SYNC_CHAINS) + dap_leger_load_end(a_net->pub.ledger); PVT(a_net)->state = PVT(a_net)->state_target = NET_STATE_OFFLINE; s_net_states_proc(a_net); dap_global_db_cluster_t *l_mempool = PVT(a_net)->mempool_clusters; @@ -2588,11 +2595,13 @@ static void s_sync_timer_callback(void *a_arg) l_net_pvt->sync_context.cur_chain = l_net_pvt->sync_context.cur_chain->next; log_it(L_DEBUG, "[%s:%d] Go to next chain %p", __FUNCTION__, __LINE__, l_net_pvt->sync_context.cur_chain); if (!l_net_pvt->sync_context.cur_chain) { + dap_chain_net_state_t l_prev_state = l_net_pvt->state; if (l_net_pvt->sync_context.last_state == SYNC_STATE_SYNCED) { l_net_pvt->state = NET_STATE_ONLINE; l_net_pvt->sync_context.state = l_net_pvt->sync_context.last_state = SYNC_STATE_IDLE; s_net_states_proc(l_net); - dap_leger_load_end(l_net->pub.ledger); + if(l_prev_state == NET_STATE_SYNC_CHAINS) + dap_leger_load_end(l_net->pub.ledger); } else l_net_pvt->sync_context.state = l_net_pvt->sync_context.last_state = SYNC_STATE_WAITING; return; @@ -2969,6 +2978,8 @@ void dap_chain_net_set_state(dap_chain_net_t *l_net, dap_chain_net_state_t a_sta if(a_state == PVT(l_net)->state){ return; } + if(PVT(l_net)->state == NET_STATE_SYNC_CHAINS) + dap_leger_load_end(l_net->pub.ledger); PVT(l_net)->state = a_state; dap_proc_thread_callback_add(NULL, s_net_states_proc, l_net); } -- GitLab