From e2e0a3e38e244d79b1b433335a308055ef86f224 Mon Sep 17 00:00:00 2001 From: "pavel.uhanov" <pavel.uhanov@demlabs.net> Date: Wed, 19 Mar 2025 17:14:23 +0300 Subject: [PATCH] [*] add cmd id enum --- modules/net/dap_chain_node_cli.c | 4 +- modules/net/dap_chain_node_rpc.c | 19 +++++++-- modules/net/include/dap_chain_node_cli.h | 50 ++++++++++++++++++++++++ modules/net/include/dap_chain_node_rpc.h | 9 ++++- 4 files changed, 77 insertions(+), 5 deletions(-) diff --git a/modules/net/dap_chain_node_cli.c b/modules/net/dap_chain_node_cli.c index 03ab818b4f..a5f19a24bf 100644 --- a/modules/net/dap_chain_node_cli.c +++ b/modules/net/dap_chain_node_cli.c @@ -65,7 +65,9 @@ int dap_chain_node_cli_init(dap_config_t * g_config) s_debug_cli = dap_config_get_item_bool_default(g_config, "cli-server", "debug-cli", false); if ( dap_cli_server_init(s_debug_cli, "cli-server") ) return log_it(L_ERROR, "Can't init CLI server!"), -1; - dap_chain_node_rpc_init(g_config); + if (dap_config_get_item_bool_default(g_config, "rpc", "enabled", false)) { + dap_chain_node_rpc_init(g_config); + } dap_cli_server_cmd_add("global_db", com_global_db, "Work with global database", "global_db flush\n" diff --git a/modules/net/dap_chain_node_rpc.c b/modules/net/dap_chain_node_rpc.c index 6c9f210f71..1bfc174a6c 100644 --- a/modules/net/dap_chain_node_rpc.c +++ b/modules/net/dap_chain_node_rpc.c @@ -23,6 +23,7 @@ #include "dap_global_db.h" #include "dap_global_db_cluster.h" #include "dap_stream.h" +#include "dap_cli_server.h" #define LOG_TAG "dap_chain_node_rpc" #define DAP_CHAIN_NODE_RPC_STATES_INFO_CURRENT_VERSION 1 @@ -49,6 +50,11 @@ DAP_STATIC_INLINE s_get_role_from_str(const char *a_str) return RPC_ROLE_INVALID; } +static void s_collect_state_info(int16_t a_cmd_num, bool a_start_measure) +{ + +} + /** * @brief get states info about current * @param a_arg - pointer to callback arg @@ -59,6 +65,7 @@ static void s_update_node_rpc_states_info(UNUSED_ARG void *a_arg) l_info->version = DAP_CHAIN_NODE_RPC_STATES_INFO_CURRENT_VERSION; l_info->address.uint64 = g_node_addr.uint64; l_info->links_count = dap_stream_get_links_count(); + l_info->cli_thread_count = dap_cli_get_cmd_thread_count(); sysinfo(&l_info->sysinfo); const char *l_node_addr_str = dap_stream_node_addr_to_str_static(l_info->address); @@ -85,10 +92,14 @@ void dap_chain_node_rpc_init(dap_config_t *a_cfg) log_it(L_ERROR, "Can't create rpc server states cluster"); return; } - if (l_role == RPC_ROLE_SERVER && dap_proc_thread_timer_add(NULL, s_update_node_rpc_states_info, NULL, s_timer_update_states_info)) - log_it(L_ERROR, "Can't activate timer on node states update"); + if (l_role == RPC_ROLE_SERVER) { + if (dap_proc_thread_timer_add(NULL, s_update_node_rpc_states_info, NULL, s_timer_update_states_info)) + log_it(L_ERROR, "Can't activate timer on node states update"); + else + dap_cli_server_statistic_callback_add(s_collect_state_info); + } } - if (l_role == RPC_ROLE_ROOT || l_role == RPC_ROLE_BALANCER) { + if (l_role != RPC_ROLE_INVALID) { if (!(s_rpc_node_list_cluster = dap_global_db_cluster_add( dap_global_db_instance_get_default(), DAP_STREAM_CLUSTER_GLOBAL, *(dap_guuid_t *)&uint128_0, s_rpc_node_list_group, @@ -213,5 +224,7 @@ dap_list_t *dap_chain_node_rpc_get_sorted_list(size_t *a_count) } l_ret = dap_list_insert_sorted(l_ret, (void *)l_node_info_curr, s_rpc_node_cmp); } + if (a_count) + *a_count = l_count; return l_ret; } \ No newline at end of file diff --git a/modules/net/include/dap_chain_node_cli.h b/modules/net/include/dap_chain_node_cli.h index 2893306b7d..133530c0aa 100644 --- a/modules/net/include/dap_chain_node_cli.h +++ b/modules/net/include/dap_chain_node_cli.h @@ -36,6 +36,56 @@ extern "C" { #endif +typedef enum dap_chain_node_cli_cmd { + DAP_CHAIN_NODE_CLI_CMD_ID_EXIT, + DAP_CHAIN_NODE_CLI_CMD_ID_TX_HISTORY, + DAP_CHAIN_NODE_CLI_CMD_ID_WALLET, + DAP_CHAIN_NODE_CLI_CMD_ID_MEMPOOL, + DAP_CHAIN_NODE_CLI_CMD_ID_LEDGER, + DAP_CHAIN_NODE_CLI_CMD_ID_TX_CREATE, + DAP_CHAIN_NODE_CLI_CMD_ID_TX_CREATE_JSON, + DAP_CHAIN_NODE_CLI_CMD_ID_TX_VERIFY, + DAP_CHAIN_NODE_CLI_CMD_ID_TX_COND_CREATE, + DAP_CHAIN_NODE_CLI_CMD_ID_TX_COND_REMOVE, + DAP_CHAIN_NODE_CLI_CMD_ID_TX_COND_UNSPENT_FIND, + DAP_CHAIN_NODE_CLI_CMD_ID_CHAIN_CA_COPY, + DAP_CHAIN_NODE_CLI_CMD_ID_DAG, + DAP_CHAIN_NODE_CLI_CMD_ID_DAG_POA, + DAP_CHAIN_NODE_CLI_CMD_ID_BLOCK, + DAP_CHAIN_NODE_CLI_CMD_ID_TOKEN, + DAP_CHAIN_NODE_CLI_CMD_ID_ESBOCS, + DAP_CHAIN_NODE_CLI_CMD_ID_GLOBAL_DB, + DAP_CHAIN_NODE_CLI_CMD_ID_NET_SRV, + DAP_CHAIN_NODE_CLI_CMD_ID_NET, + DAP_CHAIN_NODE_CLI_CMD_ID_SRV_STAKE, + DAP_CHAIN_NODE_CLI_CMD_ID_SRV_DATUM, + DAP_CHAIN_NODE_CLI_CMD_ID_POLL, + DAP_CHAIN_NODE_CLI_CMD_ID_SRV_XCHANGE, + DAP_CHAIN_NODE_CLI_CMD_ID_EMIT_DELEGATE, + DAP_CHAIN_NODE_CLI_CMD_ID_TOKEN_DECL, + DAP_CHAIN_NODE_CLI_CMD_ID_TOKEN_UPDATE, + DAP_CHAIN_NODE_CLI_CMD_ID_TOKEN_UPDATE_SIGN, + DAP_CHAIN_NODE_CLI_CMD_ID_TOKEN_DECL_SIGN, + DAP_CHAIN_NODE_CLI_CMD_ID_CHAIN_CA_PUB, + DAP_CHAIN_NODE_CLI_CMD_ID_TOKEN_EMIT, + DAP_CHAIN_NODE_CLI_CMD_ID_FIND, + DAP_CHAIN_NODE_CLI_CMD_ID_VERSION, + DAP_CHAIN_NODE_CLI_CMD_ID_REMOVE, + DAP_CHAIN_NODE_CLI_CMD_ID_GDB_IMPORT, + DAP_CHAIN_NODE_CLI_CMD_ID_GDB_EXPORT, + DAP_CHAIN_NODE_CLI_CMD_ID_STATS, + DAP_CHAIN_NODE_CLI_CMD_ID_PRINT_LOG, + DAP_CHAIN_NODE_CLI_CMD_ID_STAKE_LOCK, + DAP_CHAIN_NODE_CLI_CMD_ID_EXEC_CMD, + DAP_CHAIN_NODE_CLI_CMD_ID_POLICY, + DAP_CHAIN_NODE_CLI_CMD_ID_DECREE, + DAP_CHAIN_NODE_CLI_CMD_ID_NODE, + DAP_CHAIN_NODE_CLI_CMD_ID_VPN_STAT, + DAP_CHAIN_NODE_CLI_CMD_ID_VPN_CLIENT, + DAP_CHAIN_NODE_CLI_CMD_ID_HELP, + DAP_CHAIN_NODE_CLI_CMD_ID_TOTAL +} dap_chain_node_cli_cmd_t; + /** * Initialization of the server side of the interaction * with the console kelvin-node-cli diff --git a/modules/net/include/dap_chain_node_rpc.h b/modules/net/include/dap_chain_node_rpc.h index eb1f6afffb..dbaee77aaa 100644 --- a/modules/net/include/dap_chain_node_rpc.h +++ b/modules/net/include/dap_chain_node_rpc.h @@ -29,9 +29,16 @@ uint32_t links_count; uint32_t cli_thread_count; struct sysinfo sysinfo; + uint32_t cmd_data_size; + uint8_t cmd_data[]; } DAP_ALIGN_PACKED dap_chain_node_rpc_states_info_t; void dap_chain_node_rpc_init(dap_config_t *a_cfg); bool dap_chain_node_rpc_is_my_node_authorized(); int dap_chain_node_rpc_info_save(dap_chain_node_info_t *a_node_info); - dap_string_t *dap_chain_node_rpc_list(); \ No newline at end of file + dap_string_t *dap_chain_node_rpc_list(); + + DAP_STATIC_INLINE size_t dap_chain_node_rpc_get_states_info_size(dap_chain_node_rpc_states_info_t *a_info) + { + return a_info ? sizeof(dap_chain_node_rpc_states_info_t) + a_info->cmd_data_size : 0; + } \ No newline at end of file -- GitLab