From d5706040e834925862c9c4d099169a717cf9053e Mon Sep 17 00:00:00 2001 From: Roman Khlopkov <roman.khlopkov@demlabs.net> Date: Mon, 17 Aug 2020 18:02:26 +0300 Subject: [PATCH] [*] GDB sync debugged --- modules/chain/dap_chain.c | 6 +-- modules/channel/chain/dap_stream_ch_chain.c | 43 +-------------------- modules/consensus/none/dap_chain_cs_none.c | 3 +- modules/net/dap_chain_net.c | 38 ++++++++++-------- modules/net/include/dap_chain_net.h | 2 + 5 files changed, 28 insertions(+), 64 deletions(-) diff --git a/modules/chain/dap_chain.c b/modules/chain/dap_chain.c index bf81b508e0..a6bfdaecd9 100644 --- a/modules/chain/dap_chain.c +++ b/modules/chain/dap_chain.c @@ -252,9 +252,9 @@ dap_chain_t * dap_chain_load_from_cfg(dap_ledger_t* a_ledger, const char * a_cha // Recognize chains id if ( (l_chain_id_str = dap_config_get_item_str(l_cfg,"chain","id")) != NULL ){ - if ( sscanf(l_chain_id_str,"0x%016lX",& l_chain_id_u ) !=1 ){ - if ( sscanf(l_chain_id_str,"0x%016lx",&l_chain_id_u) !=1 ) { - if ( sscanf(l_chain_id_str,"%lu",&l_chain_id_u ) !=1 ){ + if ( sscanf(l_chain_id_str,"0x%016llX",& l_chain_id_u ) !=1 ){ + if ( sscanf(l_chain_id_str,"0x%016llx",&l_chain_id_u) !=1 ) { + if ( sscanf(l_chain_id_str,"%llu",&l_chain_id_u ) !=1 ){ log_it (L_ERROR,"Can't recognize '%s' string as chain net id, hex or dec",l_chain_id_str); dap_config_close(l_cfg); return NULL; diff --git a/modules/channel/chain/dap_stream_ch_chain.c b/modules/channel/chain/dap_stream_ch_chain.c index 73a89710ff..cd1ede58ee 100644 --- a/modules/channel/chain/dap_stream_ch_chain.c +++ b/modules/channel/chain/dap_stream_ch_chain.c @@ -398,19 +398,11 @@ void s_stream_ch_packet_in(dap_stream_ch_t* a_ch, void* a_arg) //log_it(L_INFO, "In: GLOBAL_DB data_size=%d", l_chain_pkt_data_size); // get transaction and save it to global_db if(l_chain_pkt_data_size > 0) { - //session_data_t *l_data = session_data_find(a_ch->stream->session->id); size_t l_data_obj_count = 0; - // deserialize data dap_store_obj_t *l_store_obj = dap_db_log_unpack((uint8_t*) l_chain_pkt->data, l_chain_pkt_data_size, &l_data_obj_count); // Parse data from dap_db_log_pack() - //dap_store_obj_t * l_store_obj_reversed = NULL; - //if ( dap_log_level_get()== L_DEBUG ) - //if ( l_data_obj_count && l_store_obj ) - // l_store_obj_reversed = DAP_NEW_Z_SIZE(dap_store_obj_t,l_data_obj_count+1); - - // log_it(L_INFO, "In: l_data_obj_count = %d", l_data_obj_count ); for(size_t i = 0; i < l_data_obj_count; i++) { @@ -466,10 +458,7 @@ void s_stream_ch_packet_in(dap_stream_ch_t* a_ch, void* a_arg) /*log_it(L_DEBUG, "Unpacked log history: type='%c' (0x%02hhX) group=\"%s\" key=\"%s\"" " timestamp=\"%s\" value_len=%u ", (char ) l_store_obj[i].type, l_store_obj[i].type, l_store_obj[i].group, - l_store_obj[i].key, - l_ts_str, - l_store_obj[i].value_len);*/ - + l_store_obj[i].key, l_ts_str, l_store_obj[i].value_len);*/ // apply received transaction 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) { @@ -478,36 +467,6 @@ void s_stream_ch_packet_in(dap_stream_ch_t* a_ch, void* a_arg) (dap_chain_datum_t**) &(l_store_obj->value), 1, l_store_obj[i].group); } - /*else { - // read net_name - if(!s_net_name) - { - static dap_config_t *l_cfg = NULL; - if((l_cfg = dap_config_open("network/default")) == NULL) { - log_it(L_ERROR, "Can't open default network config"); - } else { - s_net_name = dap_strdup(dap_config_get_item_str(l_cfg, "general", "name")); - dap_config_close(l_cfg); - } - } - // add datum in ledger if necessary - { - dap_chain_net_t *l_net = dap_chain_net_by_name(s_net_name); - dap_chain_t * l_chain; - if(l_net) { - DL_FOREACH(l_net->pub.chains, l_chain) - { - const char *l_chain_name = l_chain->name; //l_chain_name = dap_strdup("gdb"); - dap_chain_t *l_chain = dap_chain_net_get_chain_by_name(l_net, l_chain_name); - //const char *l_group_name = "chain-gdb.kelvin-testnet.chain-F00000000000000F";//dap_chain_gdb_get_group(l_chain); - if(l_chain->callback_datums_pool_proc_with_group) - l_chain->callback_datums_pool_proc_with_group(l_chain, - (dap_chain_datum_t**) &(l_store_obj->value), 1, - l_store_obj[i].group); - } - } - } - }*/ // save data to global_db if(!dap_chain_global_db_obj_save(l_obj, 1)) { dap_stream_ch_chain_pkt_write_error(a_ch, l_chain_pkt->hdr.net_id, diff --git a/modules/consensus/none/dap_chain_cs_none.c b/modules/consensus/none/dap_chain_cs_none.c index 59af3853fd..5086bc7ade 100644 --- a/modules/consensus/none/dap_chain_cs_none.c +++ b/modules/consensus/none/dap_chain_cs_none.c @@ -134,13 +134,12 @@ int dap_chain_gdb_init(void) static void s_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_size) { - (void) a_value; - (void) a_prefix; if (a_arg){ dap_chain_gdb_t * l_gdb = (dap_chain_gdb_t *) a_arg; dap_chain_net_t *l_net = dap_chain_net_by_id( l_gdb->chain->net_id); log_it(L_DEBUG,"%s.%s: op_code='%c' group=\"%s\" key=\"%s\" value_size=%u",l_net->pub.name, l_gdb->chain->name, a_op_code, a_group, a_key, a_value_size); + dap_chain_net_sync_gdb_broadcast((void *)l_net, a_op_code, a_prefix, a_group, a_key, a_value, a_value_size); } } diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c index b7291269e7..0032a3f4e4 100644 --- a/modules/net/dap_chain_net.c +++ b/modules/net/dap_chain_net.c @@ -240,26 +240,11 @@ void dap_chain_net_set_srv_callback_notify(dap_global_db_obj_callback_notify_t a s_srv_callback_notify = a_callback; } -/** - * @brief s_gbd_history_callback_notify - * @param a_arg - * @param a_op_code - * @param a_prefix - * @param a_group - * @param a_key - * @param a_value - * @param a_value_len - */ -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) +void dap_chain_net_sync_gdb_broadcast(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) { - (void) a_op_code; UNUSED(a_prefix); UNUSED(a_value_len); - if (!a_arg) { - return; - } dap_chain_net_t *l_net = (dap_chain_net_t *)a_arg; if (PVT(l_net)->state == NET_STATE_ONLINE) { char *l_group; @@ -289,6 +274,25 @@ static void s_gbd_history_callback_notify (void * a_arg, const char a_op_code, c } DAP_DELETE(l_data_out); } +} + +/** + * @brief s_gbd_history_callback_notify + * @param a_arg + * @param a_op_code + * @param a_prefix + * @param a_group + * @param a_key + * @param a_value + * @param a_value_len + */ +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) +{ + if (!a_arg) { + return; + } + dap_chain_net_sync_gdb_broadcast(a_arg, a_op_code, a_prefix, a_group, a_key, a_value, a_value_len); if (s_srv_callback_notify) { s_srv_callback_notify(a_arg, a_op_code, a_prefix, a_group, a_key, a_value, a_value_len); } diff --git a/modules/net/include/dap_chain_net.h b/modules/net/include/dap_chain_net.h index 9c5c4d9e9e..15470f9fdc 100644 --- a/modules/net/include/dap_chain_net.h +++ b/modules/net/include/dap_chain_net.h @@ -154,3 +154,5 @@ dap_list_t * dap_chain_net_get_add_gdb_group(dap_chain_net_t * a_net, dap_chain_ int dap_chain_net_verify_datum_for_add(dap_chain_net_t *a_net, dap_chain_datum_t * a_datum ); void dap_chain_net_dump_datum(dap_string_t * a_str_out, dap_chain_datum_t * a_datum, const char *a_hash_out_type); void dap_chain_net_set_srv_callback_notify(dap_global_db_obj_callback_notify_t a_callback); +void dap_chain_net_sync_gdb_broadcast(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); -- GitLab