From 81780f14a9acfc69b0d813257ff62e42c8963ff8 Mon Sep 17 00:00:00 2001 From: "roman.khlopkov" <roman.khlopkov@demlabs.net> Date: Fri, 9 Feb 2024 21:42:46 +0300 Subject: [PATCH] [*] BUild fix --- CMakeLists.txt | 2 +- modules/CMakeLists.txt | 1 - modules/chain/CMakeLists.txt | 2 +- modules/chain/dap_chain.c | 6 +- .../dap_chain_ch.c} | 224 ++---------------- .../dap_chain_ch_pkt.c} | 2 +- .../include/dap_chain_ch.h} | 4 +- .../include/dap_chain_ch_pkt.h} | 6 - modules/channel/chain-net-srv/CMakeLists.txt | 4 +- .../dap_stream_ch_chain_net_srv.h | 2 +- modules/channel/chain-net/CMakeLists.txt | 5 +- .../chain-net/dap_stream_ch_chain_net.c | 7 + .../chain-net/dap_stream_ch_chain_net_pkt.c | 1 - .../chain-voting/dap_stream_ch_chain_voting.c | 3 +- modules/channel/chain/CMakeLists.txt | 22 -- modules/net/dap_chain_net.c | 3 +- modules/net/dap_chain_node_cli_cmd.c | 3 +- modules/net/dap_chain_node_client.c | 8 +- modules/type/dag/dap_chain_cs_dag.c | 6 +- 19 files changed, 45 insertions(+), 266 deletions(-) rename modules/{channel/chain/dap_stream_ch_chain.c => chain/dap_chain_ch.c} (88%) rename modules/{channel/chain/dap_stream_ch_chain_pkt.c => chain/dap_chain_ch_pkt.c} (99%) rename modules/{channel/chain/include/dap_stream_ch_chain.h => chain/include/dap_chain_ch.h} (94%) rename modules/{channel/chain/include/dap_stream_ch_chain_pkt.h => chain/include/dap_chain_ch_pkt.h} (97%) delete mode 100644 modules/channel/chain/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 14b4ffc9cc..08fce37d85 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -85,7 +85,7 @@ endif() if (CELLFRAME_MODULES MATCHES "network") message("[+] Module 'network'") set(CELLFRAME_LIBS ${CELLFRAME_LIBS} dap_io dap_json_rpc dap_enc_server dap_notify_srv dap_http_server dap_session - dap_stream dap_stream_ch dap_client dap_cli_server dap_stream_ch_chain dap_stream_ch_chain_net dap_chain_net dap_chain_net_srv dap_stream_ch_chain_voting dap_chain_mempool ) + dap_stream dap_stream_ch dap_client dap_cli_server dap_stream_ch_chain_net dap_chain_net dap_chain_net_srv dap_stream_ch_chain_voting dap_chain_mempool ) endif() # Chain net services diff --git a/modules/CMakeLists.txt b/modules/CMakeLists.txt index 6f7f30de50..188c40318a 100644 --- a/modules/CMakeLists.txt +++ b/modules/CMakeLists.txt @@ -22,7 +22,6 @@ if (CELLFRAME_MODULES MATCHES "network") add_subdirectory(net/srv) add_subdirectory(json_rpc) # Stream channels - add_subdirectory(channel/chain) add_subdirectory(channel/chain-net) add_subdirectory(channel/chain-voting) endif() diff --git a/modules/chain/CMakeLists.txt b/modules/chain/CMakeLists.txt index 892e2ac057..f635a344e3 100644 --- a/modules/chain/CMakeLists.txt +++ b/modules/chain/CMakeLists.txt @@ -14,7 +14,7 @@ endif() #find_package(PkgConfig REQUIRED) #pkg_search_module(GLIB REQUIRED glib-2.0) -target_link_libraries(${PROJECT_NAME} dap_chain_common dap_global_db dap_notify_srv ${GLIB_LDFLAGS}) +target_link_libraries(${PROJECT_NAME} dap_chain_common dap_global_db dap_notify_srv dap_stream ${GLIB_LDFLAGS}) target_include_directories(${PROJECT_NAME} INTERFACE . include/ ${GLIB_INCLUDE_DIRS}) target_include_directories(${PROJECT_NAME} PUBLIC include) target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../../dap-sdk/3rdparty/uthash/src) diff --git a/modules/chain/dap_chain.c b/modules/chain/dap_chain.c index efcc10edb4..4afb24c9ae 100644 --- a/modules/chain/dap_chain.c +++ b/modules/chain/dap_chain.c @@ -39,6 +39,8 @@ #include "dap_chain_cell.h" #include "dap_chain_cs.h" #include "dap_cert_file.h" +#include "dap_chain_ch.h" +#include "dap_stream_ch_gossip.h" #include <uthash.h> #include <pthread.h> @@ -705,13 +707,13 @@ bool dap_chain_get_atom_last_hash(dap_chain_t *a_chain, dap_hash_fast_t *a_atom_ ssize_t dap_chain_atom_save(dap_chain_cell_t *a_chain_cell, const uint8_t *a_atom, size_t a_atom_size, dap_hash_fast_t *a_new_atom_hash) { - dap_chain_t *l_chain = (l_chain; + dap_chain_t *l_chain = a_chain_cell->chain; dap_return_val_if_fail(l_chain, -1); if (a_new_atom_hash) { // Atom is new and need to be distributed for the net dap_cluster_t *l_net_cluster = dap_cluster_by_mnemonim(l_chain->net_name); if (l_net_cluster) - dap_gossip_msg_issue(a_cluster->links_cluster, DAP_STREAM_CH_CHAIN_ID, + dap_gossip_msg_issue(l_net_cluster, DAP_STREAM_CH_CHAIN_ID, a_atom, a_atom_size, a_new_atom_hash); } ssize_t l_res = dap_chain_cell_file_append(a_chain_cell, a_atom, a_atom_size); diff --git a/modules/channel/chain/dap_stream_ch_chain.c b/modules/chain/dap_chain_ch.c similarity index 88% rename from modules/channel/chain/dap_stream_ch_chain.c rename to modules/chain/dap_chain_ch.c index bc9e92affd..e05de2e74f 100644 --- a/modules/channel/chain/dap_stream_ch_chain.c +++ b/modules/chain/dap_chain_ch.c @@ -64,9 +64,8 @@ #include "dap_stream_ch_pkt.h" #include "dap_stream_ch.h" #include "dap_stream_ch_proc.h" -#include "dap_stream_ch_chain.h" -#include "dap_stream_ch_chain_pkt.h" -#include "dap_chain_net.h" +#include "dap_chain_ch.h" +#include "dap_chain_ch_pkt.h" #define LOG_TAG "dap_stream_ch_chain" @@ -271,16 +270,13 @@ static void s_sync_out_chains_first_worker_callback(dap_worker_t *a_worker, void l_ch_chain->state = CHAIN_STATE_SYNC_CHAINS; l_ch_chain->request_atom_iter = l_sync_request->chain.request_atom_iter; - dap_chain_node_addr_t l_node_addr = {}; - dap_chain_net_t *l_net = dap_chain_net_by_id(l_sync_request->request_hdr.net_id); - l_node_addr.uint64 = dap_chain_net_get_cur_addr_int(l_net); if (s_debug_more ) log_it(L_INFO,"Out: DAP_STREAM_CH_CHAIN_PKT_TYPE_FIRST_CHAIN"); dap_stream_ch_chain_pkt_write_unsafe(l_ch, DAP_STREAM_CH_CHAIN_PKT_TYPE_FIRST_CHAIN, l_ch_chain->request_hdr.net_id.uint64, l_ch_chain->request_hdr.chain_id.uint64, - l_ch_chain->request_hdr.cell_id.uint64, &l_node_addr, sizeof(dap_chain_node_addr_t)); + l_ch_chain->request_hdr.cell_id.uint64, &g_node_addr, sizeof(dap_chain_node_addr_t)); DAP_DELETE(l_sync_request); } @@ -380,16 +376,13 @@ static void s_sync_out_gdb_first_worker_callback(dap_worker_t *a_worker, void *a return; } - dap_chain_net_t *l_net = dap_chain_net_by_id(l_ch_chain->request_hdr.net_id); // Add it to outgoing list l_ch_chain->state = CHAIN_STATE_SYNC_GLOBAL_DB; - dap_chain_node_addr_t l_node_addr = { 0 }; - l_node_addr.uint64 = dap_chain_net_get_cur_addr_int(l_net); if (s_debug_more ) log_it(L_INFO,"Out: DAP_STREAM_CH_CHAIN_PKT_TYPE_FIRST_GLOBAL_DB"); dap_stream_ch_chain_pkt_write_unsafe(DAP_STREAM_CH(l_ch_chain), DAP_STREAM_CH_CHAIN_PKT_TYPE_FIRST_GLOBAL_DB, l_ch_chain->request_hdr.net_id.uint64, l_ch_chain->request_hdr.chain_id.uint64, - l_ch_chain->request_hdr.cell_id.uint64, &l_node_addr, sizeof(dap_chain_node_addr_t)); + l_ch_chain->request_hdr.cell_id.uint64, &g_node_addr, sizeof(dap_chain_node_addr_t)); if(l_ch_chain->callback_notify_packet_out) l_ch_chain->callback_notify_packet_out(l_ch_chain, DAP_STREAM_CH_CHAIN_PKT_TYPE_FIRST_GLOBAL_DB, NULL, 0, l_ch_chain->callback_notify_arg); @@ -475,7 +468,7 @@ static bool s_sync_out_gdb_proc_callback(void *a_arg) } else { dap_worker_exec_callback_on(dap_events_worker_get(l_sync_request->worker->id), s_sync_out_gdb_last_worker_callback, l_sync_request ); } */ - return true; + return false; } static void s_sync_update_gdb_start_worker_callback(dap_worker_t *a_worker, void *a_arg) @@ -534,7 +527,12 @@ static bool s_sync_update_gdb_proc_callback(void *a_arg) l_sync_request->request.node_addr.uint64 = dap_chain_net_get_cur_addr_int(l_net); dap_worker_exec_callback_on(dap_events_worker_get(l_sync_request->worker->id), s_sync_update_gdb_start_worker_callback, l_sync_request); */ - return true; + return false; +} + +static bool s_gdb_in_pkt_proc_callback(void *a_arg) +{ + return false; } /** @@ -636,87 +634,6 @@ static void s_gdb_in_pkt_error_worker_callback(dap_worker_t *a_worker, void *a_a DAP_DELETE(l_sync_request); } -/** - * @brief s_gdb_sync_tsd_worker_callback - * @param a_worker - * @param a_arg - */ -static void s_gdb_sync_tsd_worker_callback(dap_worker_t *a_worker, void *a_arg) -{ - struct sync_request *l_sync_request = (struct sync_request *) a_arg; - - dap_stream_ch_t *l_ch = dap_stream_ch_find_by_uuid_unsafe(DAP_STREAM_WORKER(a_worker), l_sync_request->ch_uuid); - if( l_ch == NULL ) { - log_it(L_INFO,"Client disconnected before we sent the reply"); - } else { - size_t l_gr_len = strlen(l_sync_request->gdb.sync_group) + 1; - size_t l_data_size = 2 * sizeof(uint64_t) + l_gr_len; - dap_tsd_t *l_tsd_rec = DAP_NEW_SIZE(dap_tsd_t, l_data_size + sizeof(dap_tsd_t)); - l_tsd_rec->type = DAP_STREAM_CH_CHAIN_PKT_TYPE_UPDATE_TSD_LAST_ID; - l_tsd_rec->size = l_data_size; - uint64_t l_node_addr = dap_chain_net_get_cur_addr_int(dap_chain_net_by_id(l_sync_request->request_hdr.net_id)); - void *l_data_ptr = l_tsd_rec->data; - memcpy(l_data_ptr, &l_node_addr, sizeof(uint64_t)); - l_data_ptr += sizeof(uint64_t); - memcpy(l_data_ptr, &l_sync_request->request.id_end, sizeof(uint64_t)); - l_data_ptr += sizeof(uint64_t); - memcpy(l_data_ptr, l_sync_request->gdb.sync_group, l_gr_len); - s_stream_ch_chain_pkt_write(l_ch, DAP_STREAM_CH_CHAIN_PKT_TYPE_UPDATE_GLOBAL_DB_TSD, - l_sync_request->request_hdr.net_id.uint64, - l_sync_request->request_hdr.chain_id.uint64, - l_sync_request->request_hdr.cell_id.uint64, - l_tsd_rec, l_tsd_rec->size + sizeof(dap_tsd_t)); - DAP_DELETE(l_tsd_rec); - } - DAP_DELETE(l_sync_request->gdb.sync_group); - DAP_DELETE(l_sync_request); -} - -/** - * @brief s_gdb_in_pkt_proc_callback_get_ts_callback - * @param a_global_db_context - * @param a_rc - * @param a_group - * @param a_key - * @param a_value - * @param a_value_len - * @param value_ts - * @param a_is_pinned - * @param a_arg - */ - -/** - * @brief s_gdb_in_pkt_callback - * @param a_thread - * @param a_arg - * @return - */ -static bool s_gdb_in_pkt_proc_callback(void *a_arg) -{ - return true; -} - -/** - * @brief s_gdb_in_pkt_proc_set_raw_callback - * @param a_global_db_context - * @param a_rc - * @param a_group - * @param a_key - * @param a_values_current - * @param a_values_shift - * @param a_values_count - * @param a_values - * @param a_arg - */ -static bool s_gdb_in_pkt_proc_set_raw_callback(dap_global_db_instance_t *a_dbi, - int a_rc, const char *a_group, - const size_t a_values_total, const size_t a_values_count, - dap_store_obj_t *a_values, void *a_arg) -{ - return true; -} - - /** * @brief dap_stream_ch_chain_create_sync_request_gdb * @param a_ch_chain @@ -842,45 +759,7 @@ void s_stream_ch_packet_in(dap_stream_ch_t* a_ch, void* a_arg) return; } size_t l_chain_pkt_data_size = l_ch_pkt->hdr.data_size - sizeof(l_chain_pkt->hdr); - dap_chain_net_t *l_net = dap_chain_net_by_id(l_chain_pkt->hdr.net_id); - if (!l_net) { - if (l_ch_pkt->hdr.type == DAP_STREAM_CH_CHAIN_PKT_TYPE_ERROR) { - if(l_ch_chain->callback_notify_packet_in) { - l_ch_chain->callback_notify_packet_in(l_ch_chain, l_ch_pkt->hdr.type, l_chain_pkt, - l_chain_pkt_data_size, l_ch_chain->callback_notify_arg); - } - } else { - log_it(L_ERROR, "Invalid request from %s with ext_id %016"DAP_UINT64_FORMAT_x" net id 0x%016"DAP_UINT64_FORMAT_x - " chain id 0x%016"DAP_UINT64_FORMAT_x" cell_id 0x%016"DAP_UINT64_FORMAT_x" in packet", - a_ch->stream->esocket->remote_addr_str, l_chain_pkt->hdr.ext_id, - l_chain_pkt->hdr.net_id.uint64, l_chain_pkt->hdr.chain_id.uint64, - l_chain_pkt->hdr.cell_id.uint64); - s_stream_ch_write_error_unsafe(a_ch, l_chain_pkt->hdr.net_id.uint64, - l_chain_pkt->hdr.chain_id.uint64, l_chain_pkt->hdr.cell_id.uint64, - "ERROR_NET_INVALID_ID"); - // Who are you? I don't know you! go away! - a_ch->stream->esocket->flags |= DAP_SOCK_SIGNAL_CLOSE; - } - return; - } - if (dap_chain_net_get_state(l_net) == NET_STATE_OFFLINE) { - s_stream_ch_write_error_unsafe(a_ch, l_chain_pkt->hdr.net_id.uint64, - l_chain_pkt->hdr.chain_id.uint64, l_chain_pkt->hdr.cell_id.uint64, - "ERROR_NET_IS_OFFLINE"); - a_ch->stream->esocket->flags |= DAP_SOCK_SIGNAL_CLOSE; - return; - } - uint16_t l_acl_idx = dap_chain_net_get_acl_idx(l_net); - uint8_t l_acl = a_ch->stream->session->acl ? a_ch->stream->session->acl[l_acl_idx] : 1; - if (!l_acl) { - log_it(L_WARNING, "Unauthorized request attempt from %s to network %s", - a_ch->stream->esocket->remote_addr_str, - dap_chain_net_by_id(l_chain_pkt->hdr.net_id)->pub.name); - s_stream_ch_write_error_unsafe(a_ch, l_chain_pkt->hdr.net_id.uint64, - l_chain_pkt->hdr.chain_id.uint64, l_chain_pkt->hdr.cell_id.uint64, - "ERROR_NET_NOT_AUTHORIZED"); - return; - } + s_chain_timer_reset(l_ch_chain); switch (l_ch_pkt->hdr.type) { /// --- GDB update --- @@ -897,11 +776,7 @@ void s_stream_ch_packet_in(dap_stream_ch_t* a_ch, void* a_arg) l_chain_pkt->hdr.net_id.uint64, l_chain_pkt->hdr.chain_id.uint64, l_chain_pkt->hdr.cell_id.uint64); if (l_chain_pkt_data_size == (size_t)sizeof(dap_stream_ch_chain_sync_request_t)) l_ch_chain->request = *(dap_stream_ch_chain_sync_request_t*)l_chain_pkt->data; - dap_chain_node_client_t *l_client = (dap_chain_node_client_t *)l_ch_chain->callback_notify_arg; - if (l_client && l_client->resync_gdb) - l_ch_chain->request.id_start = 0; - else - l_ch_chain->request.id_start = 1; // incremental sync by default + l_ch_chain->request.id_start = 0; struct sync_request *l_sync_request = dap_stream_ch_chain_create_sync_request(l_chain_pkt, a_ch); l_ch_chain->stats_request_gdb_processed = 0; l_ch_chain->request_hdr = l_chain_pkt->hdr; @@ -910,26 +785,7 @@ void s_stream_ch_packet_in(dap_stream_ch_t* a_ch, void* a_arg) // Response with metadata organized in TSD case DAP_STREAM_CH_CHAIN_PKT_TYPE_UPDATE_GLOBAL_DB_TSD: { - if (l_chain_pkt_data_size) { - dap_tsd_t *l_tsd_rec = (dap_tsd_t *)l_chain_pkt->data; - if (l_tsd_rec->type != DAP_STREAM_CH_CHAIN_PKT_TYPE_UPDATE_TSD_LAST_ID || - l_tsd_rec->size < 2 * sizeof(uint64_t) + 2) { - break; - } - void *l_data_ptr = l_tsd_rec->data; - uint64_t l_node_addr = *(uint64_t *)l_data_ptr; - l_data_ptr += sizeof(uint64_t); - uint64_t l_last_id = *(uint64_t *)l_data_ptr; - l_data_ptr += sizeof(uint64_t); - char *l_group = (char *)l_data_ptr; - //dap_db_set_last_id_remote(l_node_addr, l_last_id, l_group); - if (s_debug_more) { - dap_chain_node_addr_t l_addr; - l_addr.uint64 = l_node_addr; - log_it(L_INFO, "Set last_id %"DAP_UINT64_FORMAT_U" for group %s for node "NODE_ADDR_FP_STR, - l_last_id, l_group, NODE_ADDR_FP_ARGS_S(l_addr)); - } - } else if (s_debug_more) + if (s_debug_more) log_it(L_DEBUG, "Global DB TSD packet detected"); } break; @@ -1064,36 +920,12 @@ void s_stream_ch_packet_in(dap_stream_ch_t* a_ch, void* a_arg) l_chain_pkt->hdr.net_id.uint64, l_chain_pkt->hdr.chain_id.uint64, l_chain_pkt->hdr.cell_id.uint64); if (!l_ch_chain->callback_notify_packet_in) { // we haven't node client waitng, so reply to other side dap_stream_ch_chain_sync_request_t l_sync_gdb = {}; - dap_chain_net_t *l_net = dap_chain_net_by_id(l_chain_pkt->hdr.net_id); - l_sync_gdb.node_addr.uint64 = dap_chain_net_get_cur_addr_int(l_net); + l_sync_gdb.node_addr.uint64 = g_node_addr.uint64; dap_stream_ch_chain_pkt_write_unsafe(a_ch, DAP_STREAM_CH_CHAIN_PKT_TYPE_UPDATE_GLOBAL_DB_REQ, l_chain_pkt->hdr.net_id.uint64, l_chain_pkt->hdr.chain_id.uint64, l_chain_pkt->hdr.cell_id.uint64, &l_sync_gdb, sizeof(l_sync_gdb)); } } break; - case DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNC_GLOBAL_DB_RVRS: { - dap_stream_ch_chain_sync_request_t l_sync_gdb = {}; - l_sync_gdb.id_start = 1; - dap_chain_net_t *l_net = dap_chain_net_by_id(l_chain_pkt->hdr.net_id); - l_sync_gdb.node_addr.uint64 = dap_chain_net_get_cur_addr_int(l_net); - log_it(L_INFO, "In: SYNC_GLOBAL_DB_RVRS pkt: net 0x%016"DAP_UINT64_FORMAT_x" chain 0x%016"DAP_UINT64_FORMAT_x" cell 0x%016"DAP_UINT64_FORMAT_x - ", request gdb sync from %"DAP_UINT64_FORMAT_U, l_chain_pkt->hdr.net_id.uint64 , l_chain_pkt->hdr.chain_id.uint64, - l_chain_pkt->hdr.cell_id.uint64, l_sync_gdb.id_start ); - dap_stream_ch_chain_pkt_write_unsafe(a_ch, DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNC_GLOBAL_DB, l_chain_pkt->hdr.net_id.uint64, - l_chain_pkt->hdr.chain_id.uint64, l_chain_pkt->hdr.cell_id.uint64, &l_sync_gdb, sizeof(l_sync_gdb)); - } break; - - case DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNCED_GLOBAL_DB_GROUP: { - if (s_debug_more) - log_it(L_INFO, "In: SYNCED_GLOBAL_DB_GROUP pkt net 0x%016"DAP_UINT64_FORMAT_x" chain 0x%016"DAP_UINT64_FORMAT_x" cell 0x%016"DAP_UINT64_FORMAT_x, - l_chain_pkt->hdr.net_id.uint64, l_chain_pkt->hdr.chain_id.uint64, l_chain_pkt->hdr.cell_id.uint64); - } break; - case DAP_STREAM_CH_CHAIN_PKT_TYPE_FIRST_GLOBAL_DB_GROUP: { - if (s_debug_more) - log_it(L_INFO, "In: FIRST_GLOBAL_DB_GROUP pkt net 0x%016"DAP_UINT64_FORMAT_x" chain 0x%016"DAP_UINT64_FORMAT_x" cell 0x%016"DAP_UINT64_FORMAT_x, - l_chain_pkt->hdr.net_id.uint64, l_chain_pkt->hdr.chain_id.uint64, l_chain_pkt->hdr.cell_id.uint64); - } break; - /// --- Chains update --- // Request for atoms list update case DAP_STREAM_CH_CHAIN_PKT_TYPE_UPDATE_CHAINS_REQ:{ @@ -1357,32 +1189,6 @@ void s_stream_ch_packet_in(dap_stream_ch_t* a_ch, void* a_arg) } } break; - case DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNC_CHAINS_RVRS: { - if(l_chain_pkt_data_size == sizeof(dap_stream_ch_chain_sync_request_t)) { - dap_stream_ch_chain_sync_request_t l_request = { }; - dap_chain_t *l_chain = dap_chain_find_by_id(l_chain_pkt->hdr.net_id, l_chain_pkt->hdr.chain_id); - if (l_chain) { - dap_chain_hash_fast_t l_hash; - dap_chain_get_atom_last_hash(l_chain, &l_hash, l_chain_pkt->hdr.cell_id); // Move away from i/o reactor to callback processor - l_request.hash_from = l_hash; - if( dap_log_level_get()<= L_INFO){ - char l_hash_from_str[DAP_CHAIN_HASH_FAST_STR_SIZE] = {'\0'}; - dap_chain_hash_fast_to_str(&l_hash, l_hash_from_str, DAP_CHAIN_HASH_FAST_STR_SIZE); - log_it(L_INFO, "In: SYNC_CHAINS_RVRS pkt: net 0x%016"DAP_UINT64_FORMAT_x" chain 0x%016"DAP_UINT64_FORMAT_x" cell 0x%016"DAP_UINT64_FORMAT_x - "request chains sync from %s", l_chain_pkt->hdr.net_id.uint64, l_chain_pkt->hdr.chain_id.uint64, l_chain_pkt->hdr.cell_id.uint64, - l_hash_from_str[0] ? l_hash_from_str : "(null)"); - } - dap_stream_ch_chain_pkt_write_unsafe(a_ch, DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNC_CHAINS, l_chain_pkt->hdr.net_id.uint64, - l_chain_pkt->hdr.chain_id.uint64, l_chain_pkt->hdr.cell_id.uint64, &l_request, sizeof(l_request)); - } - }else{ - log_it(L_WARNING, "DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNC_CHAINS_RVRS: Wrong chain packet size %zd when expected %zd", l_chain_pkt_data_size, sizeof(l_ch_chain->request)); - s_stream_ch_write_error_unsafe(a_ch, l_chain_pkt->hdr.net_id.uint64, - l_chain_pkt->hdr.chain_id.uint64, l_chain_pkt->hdr.cell_id.uint64, - "ERROR_CHAIN_PKT_DATA_SIZE" ); - } - } break; - case DAP_STREAM_CH_CHAIN_PKT_TYPE_ERROR:{ char * l_error_str = (char*)l_chain_pkt->data; if(l_chain_pkt_data_size>1) diff --git a/modules/channel/chain/dap_stream_ch_chain_pkt.c b/modules/chain/dap_chain_ch_pkt.c similarity index 99% rename from modules/channel/chain/dap_stream_ch_chain_pkt.c rename to modules/chain/dap_chain_ch_pkt.c index e4b48b5a6b..7f71ee760c 100644 --- a/modules/channel/chain/dap_stream_ch_chain_pkt.c +++ b/modules/chain/dap_chain_ch_pkt.c @@ -18,7 +18,7 @@ #include "dap_stream_ch.h" #include "dap_stream_worker.h" #include "dap_stream_ch_pkt.h" -#include "dap_stream_ch_chain_pkt.h" +#include "dap_chain_ch_pkt.h" #include "dap_chain.h" #define LOG_TAG "dap_stream_ch_chain_pkt" diff --git a/modules/channel/chain/include/dap_stream_ch_chain.h b/modules/chain/include/dap_chain_ch.h similarity index 94% rename from modules/channel/chain/include/dap_stream_ch_chain.h rename to modules/chain/include/dap_chain_ch.h index 3598ebd9b6..0685aaf412 100644 --- a/modules/channel/chain/include/dap_stream_ch_chain.h +++ b/modules/chain/include/dap_chain_ch.h @@ -28,9 +28,8 @@ #include "dap_chain_common.h" #include "dap_chain.h" -#include "dap_chain_node_client.h" #include "dap_list.h" -#include "dap_stream_ch_chain_pkt.h" +#include "dap_chain_ch_pkt.h" #include "uthash.h" #include "dap_global_db_cluster.h" @@ -94,6 +93,5 @@ typedef struct dap_stream_ch_chain { int dap_stream_ch_chain_init(void); void dap_stream_ch_chain_deinit(void); -void dap_stream_ch_chain_create_sync_request_gdb(dap_stream_ch_chain_t * a_ch_chain, dap_chain_net_t * a_net); void dap_stream_ch_chain_timer_start(dap_stream_ch_chain_t *a_ch_chain); void dap_stream_ch_chain_reset_unsafe(dap_stream_ch_chain_t *a_ch_chain); diff --git a/modules/channel/chain/include/dap_stream_ch_chain_pkt.h b/modules/chain/include/dap_chain_ch_pkt.h similarity index 97% rename from modules/channel/chain/include/dap_stream_ch_chain_pkt.h rename to modules/chain/include/dap_chain_ch_pkt.h index 69af3d189f..c2b4f60616 100644 --- a/modules/channel/chain/include/dap_stream_ch_chain_pkt.h +++ b/modules/chain/include/dap_chain_ch_pkt.h @@ -43,7 +43,6 @@ #define DAP_STREAM_CH_CHAIN_PKT_TYPE_FIRST_CHAIN 0x20 #define DAP_STREAM_CH_CHAIN_PKT_TYPE_FIRST_GLOBAL_DB 0x21 -#define DAP_STREAM_CH_CHAIN_PKT_TYPE_FIRST_GLOBAL_DB_GROUP 0x31 #define DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNC_CHAINS 0x02 #define DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNC_GLOBAL_DB 0x12 @@ -52,11 +51,6 @@ #define DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNCED_CHAINS 0x03 #define DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNCED_GLOBAL_DB 0x13 #define DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNCED_ALL 0x23 -#define DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNCED_GLOBAL_DB_GROUP 0x33 - -#define DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNC_CHAINS_RVRS 0x04 -#define DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNC_GLOBAL_DB_RVRS 0x14 - #define DAP_STREAM_CH_CHAIN_PKT_TYPE_UPDATE_CHAINS_REQ 0x05 #define DAP_STREAM_CH_CHAIN_PKT_TYPE_UPDATE_CHAINS_TSD 0x15 diff --git a/modules/channel/chain-net-srv/CMakeLists.txt b/modules/channel/chain-net-srv/CMakeLists.txt index 993f891e65..39a9e5e9c7 100644 --- a/modules/channel/chain-net-srv/CMakeLists.txt +++ b/modules/channel/chain-net-srv/CMakeLists.txt @@ -6,7 +6,7 @@ file(GLOB DAP_STREAM_CH_CHAIN_NET_SRV_HDRS include/*.h) add_library(${PROJECT_NAME} STATIC ${DAP_STREAM_CH_CHAIN_NET_SRV_SRCS} ${DAP_STREAM_CH_CHAIN_NET_SRV_HDRS}) -target_link_libraries(${PROJECT_NAME} dap_core dap_crypto dap_chain_common dap_chain dap_chain_mempool dap_chain_net dap_chain_net_srv dap_io dap_stream dap_stream_ch dap_stream_ch_chain dap_stream_ch_chain_net) +target_link_libraries(${PROJECT_NAME} dap_core dap_crypto dap_chain_common dap_chain dap_chain_mempool dap_chain_net dap_chain_net_srv dap_io dap_stream dap_stream_ch dap_stream_ch_chain_net) target_include_directories(${PROJECT_NAME} INTERFACE .) target_include_directories(${PROJECT_NAME} PUBLIC include) @@ -18,4 +18,4 @@ INSTALL(TARGETS ${PROJECT_NAME} ARCHIVE DESTINATION lib/modules/channel/chain-net-srv/ PUBLIC_HEADER DESTINATION include/modules/channel/chain-net-srv/ ) -endif() \ No newline at end of file +endif() diff --git a/modules/channel/chain-net-srv/dap_stream_ch_chain_net_srv.h b/modules/channel/chain-net-srv/dap_stream_ch_chain_net_srv.h index 3346512aa7..18d3f1a112 100644 --- a/modules/channel/chain-net-srv/dap_stream_ch_chain_net_srv.h +++ b/modules/channel/chain-net-srv/dap_stream_ch_chain_net_srv.h @@ -53,7 +53,7 @@ typedef struct dap_stream_ch_chain_net_srv { } dap_stream_ch_chain_net_srv_t; #define DAP_STREAM_CH_CHAIN_NET_SRV(a) ((dap_stream_ch_chain_net_srv_t *) ((a)->internal) ) -#define DAP_STREAM_CH_ID_NET_SRV 'R' +#define DAP_STREAM_CH_NET_SRV_ID 'R' int dap_stream_ch_chain_net_srv_init(void); diff --git a/modules/channel/chain-net/CMakeLists.txt b/modules/channel/chain-net/CMakeLists.txt index 7f854714d5..cd64879393 100644 --- a/modules/channel/chain-net/CMakeLists.txt +++ b/modules/channel/chain-net/CMakeLists.txt @@ -6,8 +6,7 @@ file(GLOB DAP_STREAM_CH_CHAIN_NET_HDRS include/*.h) add_library(${PROJECT_NAME} STATIC ${DAP_STREAM_CH_CHAIN_NET_SRCS} ${DAP_STREAM_CH_CHAIN_NET_HDRS}) -target_link_libraries(${PROJECT_NAME} dap_core dap_crypto dap_stream dap_stream_ch dap_stream_ch_chain - dap_chain_net dap_chain_net_srv_stake) +target_link_libraries(${PROJECT_NAME} dap_core dap_crypto dap_stream dap_stream_ch dap_chain_net dap_chain_net_srv_stake) target_include_directories(${PROJECT_NAME} INTERFACE .) target_include_directories(${PROJECT_NAME} PUBLIC include) @@ -20,4 +19,4 @@ INSTALL(TARGETS ${PROJECT_NAME} ARCHIVE DESTINATION lib/modules/channel/chain-net/ PUBLIC_HEADER DESTINATION include/modules/channel/chain-net/ ) -endif() \ No newline at end of file +endif() diff --git a/modules/channel/chain-net/dap_stream_ch_chain_net.c b/modules/channel/chain-net/dap_stream_ch_chain_net.c index 28f683a478..317d1b64f2 100644 --- a/modules/channel/chain-net/dap_stream_ch_chain_net.c +++ b/modules/channel/chain-net/dap_stream_ch_chain_net.c @@ -156,6 +156,13 @@ void s_stream_ch_packet_in(dap_stream_ch_t *a_ch, void* a_arg) l_ch_chain_net_pkt->hdr.net_id, l_err_str, sizeof(l_err_str)); return; } + /*if (dap_chain_net_get_state(l_net) == NET_STATE_OFFLINE) { + s_stream_ch_write_error_unsafe(a_ch, l_chain_pkt->hdr.net_id.uint64, + l_chain_pkt->hdr.chain_id.uint64, l_chain_pkt->hdr.cell_id.uint64, + "ERROR_NET_IS_OFFLINE"); + a_ch->stream->esocket->flags |= DAP_SOCK_SIGNAL_CLOSE; + return; + }*/ switch (l_ch_pkt->hdr.type) { case DAP_STREAM_CH_CHAIN_NET_PKT_TYPE_ANNOUNCE: assert(!dap_stream_node_addr_is_blank(&a_ch->stream->node)); diff --git a/modules/channel/chain-net/dap_stream_ch_chain_net_pkt.c b/modules/channel/chain-net/dap_stream_ch_chain_net_pkt.c index c43d17b8ca..24be3ab116 100644 --- a/modules/channel/chain-net/dap_stream_ch_chain_net_pkt.c +++ b/modules/channel/chain-net/dap_stream_ch_chain_net_pkt.c @@ -19,7 +19,6 @@ #include <dap_stream.h> #include <dap_stream_pkt.h> #include <dap_stream_ch_pkt.h> -#include "dap_stream_ch_chain_pkt.h" #include "dap_stream_ch_chain_net.h" #include "dap_stream_ch_chain_net_pkt.h" diff --git a/modules/channel/chain-voting/dap_stream_ch_chain_voting.c b/modules/channel/chain-voting/dap_stream_ch_chain_voting.c index b9ff167aa0..bc51e1c74d 100644 --- a/modules/channel/chain-voting/dap_stream_ch_chain_voting.c +++ b/modules/channel/chain-voting/dap_stream_ch_chain_voting.c @@ -3,8 +3,7 @@ #include "dap_stream_ch_pkt.h" #include "dap_stream_ch.h" #include "dap_stream_ch_proc.h" -#include "dap_stream_ch_chain.h" -#include "dap_stream_ch_chain_pkt.h" +#include "dap_chain_ch.h" #include "dap_stream_ch_chain_voting.h" #include "dap_chain_net.h" #include "dap_client_pvt.h" diff --git a/modules/channel/chain/CMakeLists.txt b/modules/channel/chain/CMakeLists.txt deleted file mode 100644 index 66387a0de8..0000000000 --- a/modules/channel/chain/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -cmake_minimum_required(VERSION 3.10) -project (dap_stream_ch_chain) - -file(GLOB DAP_STREAM_CH_CHAIN_SRCS *.c) -file(GLOB DAP_STREAM_CH_CHAIN_HDRS include/*.h) - -add_library(${PROJECT_NAME} STATIC ${DAP_STREAM_CH_CHAIN_SRCS} ${DAP_STREAM_CH_CHAIN_HDRS}) - -target_link_libraries(${PROJECT_NAME} dap_core dap_crypto dap_chain dap_chain_net dap_global_db dap_stream dap_stream_ch) - -target_include_directories(${PROJECT_NAME} INTERFACE .) -target_include_directories(${PROJECT_NAME} PUBLIC include) -target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../../../dap-sdk/3rdparty/uthash/src) - -if (INSTALL_SDK) -set_target_properties(${PROJECT_NAME} PROPERTIES PUBLIC_HEADER "${DAP_STREAM_CH_CHAIN_HDRS}") -INSTALL(TARGETS ${PROJECT_NAME} - LIBRARY DESTINATION lib/modules/channel/chain/ - ARCHIVE DESTINATION lib/modules/channel/chain/ - PUBLIC_HEADER DESTINATION include/modules/channel/chain/ -) -endif() \ No newline at end of file diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c index d8ad7b8b7c..1cf3a9d7cf 100644 --- a/modules/net/dap_chain_net.c +++ b/modules/net/dap_chain_net.c @@ -104,8 +104,7 @@ #include "dap_global_db.h" #include "dap_stream_ch_chain_net_pkt.h" #include "dap_stream_ch_chain_net.h" -#include "dap_stream_ch_chain.h" -#include "dap_stream_ch_chain_pkt.h" +#include "dap_chain_ch.h" #include "dap_stream_ch.h" #include "dap_stream.h" #include "dap_stream_ch_pkt.h" diff --git a/modules/net/dap_chain_node_cli_cmd.c b/modules/net/dap_chain_node_cli_cmd.c index f4f9ecf428..d7c4c4b394 100644 --- a/modules/net/dap_chain_node_cli_cmd.c +++ b/modules/net/dap_chain_node_cli_cmd.c @@ -104,8 +104,7 @@ #include "dap_global_db_cluster.h" #include "dap_stream_ch_chain_net.h" -#include "dap_stream_ch_chain.h" -#include "dap_stream_ch_chain_pkt.h" +#include "dap_chain_ch.h" #include "dap_stream_ch_chain_net_pkt.h" #include "dap_enc_base64.h" #include "dap_chain_net_srv_stake_pos_delegate.h" diff --git a/modules/net/dap_chain_node_client.c b/modules/net/dap_chain_node_client.c index 7b0c9473fa..4d82fde476 100644 --- a/modules/net/dap_chain_node_client.c +++ b/modules/net/dap_chain_node_client.c @@ -61,8 +61,8 @@ #include "dap_chain_net_srv.h" #include "dap_stream_worker.h" #include "dap_stream_ch_pkt.h" -#include "dap_stream_ch_chain.h" -#include "dap_stream_ch_chain_pkt.h" +#include "dap_chain_ch.h" +#include "dap_chain_ch_pkt.h" #include "dap_stream_ch_chain_net.h" #include "dap_stream_ch_proc.h" #include "dap_stream_ch_chain_net_pkt.h" @@ -193,10 +193,10 @@ dap_chain_node_sync_status_t dap_chain_node_client_start_sync(dap_chain_node_cli if (l_trylocked) { log_it(L_INFO, "Start synchronization process with "NODE_ADDR_FP_STR, NODE_ADDR_FP_ARGS_S(a_node_client->remote_node_addr)); dap_stream_ch_chain_sync_request_t l_sync_chain = {}; - l_sync_gdb.node_addr.uint64 = dap_chain_net_get_cur_addr_int(l_net); + l_sync_chain.node_addr.uint64 = dap_chain_net_get_cur_addr_int(l_net); dap_stream_ch_chain_pkt_write_unsafe(a_node_client->ch_chain, DAP_STREAM_CH_CHAIN_PKT_TYPE_UPDATE_CHAINS_REQ, - l_net->pub.id.uint64, l_net->pub.chains->id, 0, + l_net->pub.id.uint64, l_net->pub.chains->id.uint64, 0, &l_sync_chain, sizeof(l_sync_chain)); if (!l_ch_chain->activity_timer) dap_stream_ch_chain_timer_start(l_ch_chain); diff --git a/modules/type/dag/dap_chain_cs_dag.c b/modules/type/dag/dap_chain_cs_dag.c index ba7e6339d6..0b5f66f454 100644 --- a/modules/type/dag/dap_chain_cs_dag.c +++ b/modules/type/dag/dap_chain_cs_dag.c @@ -725,7 +725,7 @@ static bool s_chain_callback_datums_pool_proc(dap_chain_t *a_chain, dap_chain_da return false; } dap_hash_fast_t l_event_hash; - dap_hash_fast(l_new_atom, l_event_size, &l_event_hash); + dap_hash_fast(l_event, l_event_size, &l_event_hash); if (l_dag->is_add_directly) { dap_chain_atom_verify_res_t l_verify_res; switch (l_verify_res = s_chain_callback_atom_add(a_chain, l_event, l_event_size)) { @@ -742,11 +742,11 @@ static bool s_chain_callback_datums_pool_proc(dap_chain_t *a_chain, dap_chain_da dap_chain_cs_dag_event_round_item_t l_round_item = { .round_info.datum_hash = l_datum_hash }; char *l_event_hash_hex_str = DAP_NEW_STACK_SIZE(char, DAP_CHAIN_HASH_FAST_STR_SIZE); dap_chain_hash_fast_to_str(&l_event_hash, l_event_hash_hex_str, DAP_CHAIN_HASH_FAST_STR_SIZE); - bool l_res = dap_chain_cs_dag_event_gdb_set(l_dag, l_event_hash_str, l_event, l_event_size, &l_round_item); + bool l_res = dap_chain_cs_dag_event_gdb_set(l_dag, l_event_hash_hex_str, l_event, l_event_size, &l_round_item); log_it(l_res ? L_INFO : L_ERROR, l_res ? "Event %s placed in the new forming round [id %"DAP_UINT64_FORMAT_U"]" : "Can't add new event [%s] to the new events round [id %"DAP_UINT64_FORMAT_U"]", - l_event_hash_str, l_current_round); + l_event_hash_hex_str, l_current_round); return l_res; } -- GitLab