diff --git a/dap_chain_net.c b/dap_chain_net.c index 4ebe09b966c88f1f4e120f5a810d5b161bc89bfd..e1ad18a8cec86cfddefe10dd97c3e49a34bf7a46 100644 --- a/dap_chain_net.c +++ b/dap_chain_net.c @@ -124,6 +124,8 @@ static int s_net_states_proc(dap_chain_net_t * l_net); static void * s_net_proc_thread ( void * a_net); static void s_net_proc_thread_start( dap_chain_net_t * a_net ); static void s_net_proc_kill( dap_chain_net_t * a_net ); +int s_net_load(const char * a_net_name); + static void s_gbd_history_callback_notify (void * a_arg,const char a_op_code, const char * a_prefix, const char * a_group, const char * a_key, const void * a_value, const size_t a_value_len); @@ -702,8 +704,23 @@ int dap_chain_net_init() dap_chain_global_db_add_history_group_prefix("global"); dap_chain_global_db_add_history_callback_notify("global", s_gbd_history_callback_notify, NULL ); + return 0; +} - return 0; +void dap_chain_net_load_all() +{ + char * l_net_dir_str = dap_strdup_printf("%s/network", dap_config_path()); + DIR * l_net_dir = opendir( l_net_dir_str); + DAP_DELETE (l_net_dir_str); + if ( l_net_dir ){ + struct dirent * l_dir_entry; + while ( (l_dir_entry = readdir(l_net_dir) )!= NULL ){ + if (l_dir_entry->d_name[0]=='\0') + continue; + log_it(L_DEBUG,"Network config %s try to load", l_dir_entry->d_name); + s_net_load(l_dir_entry->d_name); + } + } } /** @@ -875,8 +892,12 @@ static int s_cli_net(int argc, char ** argv, char **a_str_reply) return ret; } - -int dap_chain_net_load(const char * a_net_name) +/** + * @brief s_net_load + * @param a_net_name + * @return + */ +int s_net_load(const char * a_net_name) { static dap_config_t *l_cfg=NULL; dap_string_t *l_cfg_path = dap_string_new("network/"); @@ -1119,7 +1140,7 @@ int dap_chain_net_load(const char * a_net_name) } - if (s_seed_mode) { // If we seed we do everything manual. First think - prefil list of node_addrs and its aliases + if (s_seed_mode || !dap_config_get_item_bool_default(g_config ,"general", "auto_online",false ) ) { // If we seed we do everything manual. First think - prefil list of node_addrs and its aliases PVT(l_net)->state_target = NET_STATE_OFFLINE; } PVT(l_net)->load_mode = false; diff --git a/dap_chain_net.h b/dap_chain_net.h index 08ec015c8a64910bef9dc8f6b83c9aed94b4fae8..2a1bf9342ee50fe912316cef17af791dd1927162 100644 --- a/dap_chain_net.h +++ b/dap_chain_net.h @@ -67,7 +67,7 @@ typedef struct dap_chain_net{ int dap_chain_net_init(void); void dap_chain_net_deinit(void); -int dap_chain_net_load(const char * a_net_name); +void dap_chain_net_load_all(); int dap_chain_net_state_go_to(dap_chain_net_t * a_net, dap_chain_net_state_t a_new_state);