From b9fd39b91182d1b963864263e7c476e33b90a1ed Mon Sep 17 00:00:00 2001 From: Roman Khlopkov <roman.khlopkov@demlabs.net> Date: Wed, 6 Apr 2022 15:15:33 +0300 Subject: [PATCH] [-] Default autoprocessing for master & root nodes --- modules/net/dap_chain_node.c | 56 +++++++++++++--------------- modules/net/dap_chain_node_cli_cmd.c | 5 ++- 2 files changed, 29 insertions(+), 32 deletions(-) diff --git a/modules/net/dap_chain_node.c b/modules/net/dap_chain_node.c index de32cd4f0e..280603a86a 100644 --- a/modules/net/dap_chain_node.c +++ b/modules/net/dap_chain_node.c @@ -260,53 +260,49 @@ static void s_chain_node_mempool_autoproc_notify(void *a_arg, const char a_op_co bool dap_chain_node_mempool_autoproc_init() { uint16_t l_net_count; - bool l_mempool_auto_default = false, l_ret = false; + if (!dap_config_get_item_bool_default(g_config, "mempool", "auto_proc", false)) + return false; dap_chain_net_t **l_net_list = dap_chain_net_list(&l_net_count); for (uint16_t i = 0; i < l_net_count; i++) { dap_chain_node_role_t l_role = dap_chain_net_get_role(l_net_list[i]); - switch (l_role.enums) { case NODE_ROLE_ROOT: case NODE_ROLE_MASTER: case NODE_ROLE_ROOT_MASTER: case NODE_ROLE_CELL_MASTER: - l_mempool_auto_default = true; + l_net_list[i]->pub.mempool_autoproc = true; break; default: - l_mempool_auto_default = false; - break; + l_net_list[i]->pub.mempool_autoproc = false; + continue; } - l_net_list[i]->pub.mempool_autoproc = dap_config_get_item_bool_default(g_config, "mempool", "auto_proc", l_mempool_auto_default); - if (l_net_list[i]->pub.mempool_autoproc) { - l_ret = true; - dap_chain_t *l_chain; - DL_FOREACH(l_net_list[i]->pub.chains, l_chain) { - if (!l_chain) { - continue; - } - char *l_gdb_group_mempool = NULL; - l_gdb_group_mempool = dap_chain_net_get_gdb_group_mempool(l_chain); - size_t l_objs_size = 0; - dap_global_db_obj_t *l_objs = dap_chain_global_db_gr_load(l_gdb_group_mempool, &l_objs_size); - if (l_objs_size) { - for (size_t i = 0; i < l_objs_size; i++) { - if (!l_objs[i].value_len) - continue; - dap_chain_datum_t *l_datum = (dap_chain_datum_t *)l_objs[i].value; - if (dap_chain_node_mempool_process(l_chain, l_datum) >= 0) { - // Delete processed objects - dap_chain_global_db_gr_del( l_objs[i].key, l_gdb_group_mempool); - } + dap_chain_t *l_chain; + DL_FOREACH(l_net_list[i]->pub.chains, l_chain) { + if (!l_chain) { + continue; + } + char *l_gdb_group_mempool = NULL; + l_gdb_group_mempool = dap_chain_net_get_gdb_group_mempool(l_chain); + size_t l_objs_size = 0; + dap_global_db_obj_t *l_objs = dap_chain_global_db_gr_load(l_gdb_group_mempool, &l_objs_size); + if (l_objs_size) { + for (size_t i = 0; i < l_objs_size; i++) { + if (!l_objs[i].value_len) + continue; + dap_chain_datum_t *l_datum = (dap_chain_datum_t *)l_objs[i].value; + if (dap_chain_node_mempool_process(l_chain, l_datum) >= 0) { + // Delete processed objects + dap_chain_global_db_gr_del( l_objs[i].key, l_gdb_group_mempool); } - dap_chain_global_db_objs_delete(l_objs, l_objs_size); } - DAP_DELETE(l_gdb_group_mempool); - dap_chain_add_mempool_notify_callback(l_chain, s_chain_node_mempool_autoproc_notify, l_chain); + dap_chain_global_db_objs_delete(l_objs, l_objs_size); } + DAP_DELETE(l_gdb_group_mempool); + dap_chain_add_mempool_notify_callback(l_chain, s_chain_node_mempool_autoproc_notify, l_chain); } } DAP_DELETE(l_net_list); - return l_ret; + return true; } /** diff --git a/modules/net/dap_chain_node_cli_cmd.c b/modules/net/dap_chain_node_cli_cmd.c index 2dd76fb6b5..145712ef7f 100644 --- a/modules/net/dap_chain_node_cli_cmd.c +++ b/modules/net/dap_chain_node_cli_cmd.c @@ -3340,9 +3340,7 @@ int com_token_emit(int a_argc, char ** a_argv, char ** a_str_reply) // Delete token emission DAP_DEL_Z(l_emission); - //remove previous emission datum from mempool if have new signed emission datum char *l_gdb_group_mempool_emission = dap_chain_net_get_gdb_group_mempool(l_chain_emission); - dap_chain_global_db_gr_del(l_emission_hash_str_remove, l_gdb_group_mempool_emission); size_t l_datum_emission_size = sizeof(l_datum_emission->header) + l_datum_emission->header.data_size; @@ -3368,6 +3366,9 @@ int com_token_emit(int a_argc, char ** a_argv, char ** a_str_reply) DAP_DEL_Z(l_certs); return -1; } + //remove previous emission datum from mempool if have new signed emission datum + if (l_emission_hash_str_remove) + dap_chain_global_db_gr_del(l_emission_hash_str_remove, l_gdb_group_mempool_emission); if(l_chain_base_tx) { dap_chain_hash_fast_t *l_datum_tx_hash = dap_chain_mempool_base_tx_create(l_chain_base_tx, &l_emission_hash, -- GitLab