Skip to content
Snippets Groups Projects
Commit 40151fee authored by dmitriy.gerasimov's avatar dmitriy.gerasimov
Browse files

[*] Lot of fixes

parent c17bb440
No related branches found
No related tags found
No related merge requests found
...@@ -120,7 +120,9 @@ static int s_net_states_proc(dap_chain_net_t * l_net); ...@@ -120,7 +120,9 @@ 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 ( void * a_net);
static void s_net_proc_thread_start( dap_chain_net_t * 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 ); static void s_net_proc_kill( dap_chain_net_t * a_net );
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);
static int s_cli_net(int argc, const char ** argv, char **str_reply); static int s_cli_net(int argc, const char ** argv, char **str_reply);
static bool s_seed_mode = false; static bool s_seed_mode = false;
...@@ -151,6 +153,25 @@ int dap_chain_net_state_go_to(dap_chain_net_t * a_net, dap_chain_net_state_t a_n ...@@ -151,6 +153,25 @@ int dap_chain_net_state_go_to(dap_chain_net_t * a_net, dap_chain_net_state_t a_n
return 0; return 0;
} }
/**
* @brief s_gbd_history_callback_notify
* @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) {
dap_chain_net_t * l_net = (dap_chain_net_t *) a_arg;
dap_chain_net_sync_all(l_net);
}
}
/** /**
* @brief s_net_states_proc * @brief s_net_states_proc
...@@ -582,6 +603,7 @@ int dap_chain_net_init() ...@@ -582,6 +603,7 @@ int dap_chain_net_init()
"\tList,add,del, dump or establish links\n\n" "\tList,add,del, dump or establish links\n\n"
); );
s_seed_mode = dap_config_get_item_bool_default(g_config,"general","seed_mode",false); s_seed_mode = dap_config_get_item_bool_default(g_config,"general","seed_mode",false);
return 0; return 0;
} }
...@@ -704,6 +726,8 @@ int dap_chain_net_load(const char * a_net_name) ...@@ -704,6 +726,8 @@ int dap_chain_net_load(const char * a_net_name)
} }
l_net->pub.gdb_groups_prefix = dap_strdup ( l_net->pub.gdb_groups_prefix = dap_strdup (
dap_config_get_item_str_default(l_cfg , "general" , "gdb_groups_prefix","" ) ); dap_config_get_item_str_default(l_cfg , "general" , "gdb_groups_prefix","" ) );
dap_chain_global_db_add_history_group_prefix( l_net->pub.gdb_groups_prefix);
dap_chain_global_db_add_history_callback_notify(l_net->pub.gdb_groups_prefix, s_gbd_history_callback_notify, l_net );
// Add network to the list // Add network to the list
...@@ -775,6 +799,7 @@ int dap_chain_net_load(const char * a_net_name) ...@@ -775,6 +799,7 @@ int dap_chain_net_load(const char * a_net_name)
} }
// Init chains // Init chains
size_t l_chains_path_size =strlen(dap_config_path())+1+strlen(l_net->pub.name)+1+strlen("network")+1; size_t l_chains_path_size =strlen(dap_config_path())+1+strlen(l_net->pub.name)+1+strlen("network")+1;
char * l_chains_path = DAP_NEW_Z_SIZE (char,l_chains_path_size); char * l_chains_path = DAP_NEW_Z_SIZE (char,l_chains_path_size);
...@@ -796,7 +821,7 @@ int dap_chain_net_load(const char * a_net_name) ...@@ -796,7 +821,7 @@ int dap_chain_net_load(const char * a_net_name)
//dap_config_open(l_chains_path); //dap_config_open(l_chains_path);
// Create chain object // Create chain object
dap_chain_t * l_chain = dap_chain_load_from_cfg(l_net->pub.name, l_net->pub.id, l_chains_path); dap_chain_t * l_chain = dap_chain_load_from_cfg(l_net->pub.ledger, l_net->pub.name, l_net->pub.id, l_chains_path);
if(l_chain){ if(l_chain){
DL_APPEND( l_net->pub.chains, l_chain); DL_APPEND( l_net->pub.chains, l_chain);
if(l_chain->callback_created) if(l_chain->callback_created)
......
...@@ -1913,7 +1913,7 @@ int com_token_decl(int argc, const char ** argv, char ** str_reply) ...@@ -1913,7 +1913,7 @@ int com_token_decl(int argc, const char ** argv, char ** str_reply)
} }
// Load certs lists // Load certs lists
size_t l_signs_size = dap_chain_cert_parse_str_list(l_certs_str, &l_certs, &l_certs_size); size_t l_certs_count = dap_chain_cert_parse_str_list(l_certs_str, &l_certs, &l_certs_size);
if(!l_certs_size) { if(!l_certs_size) {
dap_chain_node_cli_set_reply_text(str_reply, dap_chain_node_cli_set_reply_text(str_reply,
"token_create command requres at least one valid certificate to sign the basic transaction of emission"); "token_create command requres at least one valid certificate to sign the basic transaction of emission");
...@@ -1925,8 +1925,7 @@ int com_token_decl(int argc, const char ** argv, char ** str_reply) ...@@ -1925,8 +1925,7 @@ int com_token_decl(int argc, const char ** argv, char ** str_reply)
l_certs_size = l_signs_total; l_certs_size = l_signs_total;
// Create new datum token // Create new datum token
dap_chain_datum_token_t * l_datum_token = DAP_NEW_Z_SIZE(dap_chain_datum_token_t, sizeof(l_datum_token->header) + dap_chain_datum_token_t * l_datum_token = DAP_NEW_Z_SIZE(dap_chain_datum_token_t, sizeof(l_datum_token->header));
l_signs_size);
l_datum_token->header.version = 1; // Current version l_datum_token->header.version = 1; // Current version
snprintf(l_datum_token->header.ticker, sizeof(l_datum_token->header.ticker), "%s", l_ticker); snprintf(l_datum_token->header.ticker, sizeof(l_datum_token->header.ticker), "%s", l_ticker);
l_datum_token->header.total_supply = l_total_supply; l_datum_token->header.total_supply = l_total_supply;
...@@ -1942,11 +1941,13 @@ int com_token_decl(int argc, const char ** argv, char ** str_reply) ...@@ -1942,11 +1941,13 @@ int com_token_decl(int argc, const char ** argv, char ** str_reply)
sizeof(l_datum_token->header), sizeof(l_datum_token->header),
0); 0);
size_t l_sign_size = dap_chain_sign_get_size(l_sign); size_t l_sign_size = dap_chain_sign_get_size(l_sign);
l_datum_token=DAP_REALLOC(l_datum_token,sizeof (l_datum_token->header)+l_signs_offset +l_sign_size);
memcpy(l_datum_token->signs + l_signs_offset, l_sign, l_sign_size); memcpy(l_datum_token->signs + l_signs_offset, l_sign, l_sign_size);
l_signs_offset += l_sign_size;
DAP_DELETE(l_sign); DAP_DELETE(l_sign);
} }
dap_chain_datum_t * l_datum = dap_chain_datum_create(DAP_CHAIN_DATUM_TOKEN_DECL, l_datum_token, dap_chain_datum_t * l_datum = dap_chain_datum_create(DAP_CHAIN_DATUM_TOKEN_DECL, l_datum_token,
sizeof(l_datum_token->header) + l_signs_size); sizeof(l_datum_token->header) + l_signs_offset );
size_t l_datum_size = dap_chain_datum_size(l_datum); size_t l_datum_size = dap_chain_datum_size(l_datum);
// Calc datum's hash // Calc datum's hash
...@@ -2106,19 +2107,10 @@ int com_token_emit(int argc, const char ** argv, char ** str_reply) ...@@ -2106,19 +2107,10 @@ int com_token_emit(int argc, const char ** argv, char ** str_reply)
char * l_gdb_group_mempool_base_tx = dap_chain_net_get_gdb_group_mempool(l_chain_base_tx); char * l_gdb_group_mempool_base_tx = dap_chain_net_get_gdb_group_mempool(l_chain_base_tx);
// Create emission datum // Create emission datum
// First calc summary sign size
size_t l_token_emission_signs_size =0;
for ( size_t i=0 ; i < l_certs_size ; i++) {
// TODO Here must be added serialized size!
l_token_emission_signs_size += dap_chain_cert_sign_output_size(l_certs[i],0);
}
// then create datum in memory // then create datum in memory
dap_chain_datum_token_emission_t * l_token_emission; dap_chain_datum_token_emission_t * l_token_emission;
size_t l_token_emission_size = sizeof (l_token_emission->hdr) + size_t l_token_emission_size = sizeof (l_token_emission->hdr) +
sizeof (l_token_emission->data.type_auth.signs_count) + sizeof (l_token_emission->data.type_auth.signs_count);
l_token_emission_signs_size;
l_token_emission = DAP_NEW_Z_SIZE(dap_chain_datum_token_emission_t, l_token_emission_size); l_token_emission = DAP_NEW_Z_SIZE(dap_chain_datum_token_emission_t, l_token_emission_size);
strncpy(l_token_emission->hdr.ticker, l_ticker, sizeof(l_token_emission->hdr.ticker)); strncpy(l_token_emission->hdr.ticker, l_ticker, sizeof(l_token_emission->hdr.ticker));
...@@ -2129,6 +2121,8 @@ int com_token_emit(int argc, const char ** argv, char ** str_reply) ...@@ -2129,6 +2121,8 @@ int com_token_emit(int argc, const char ** argv, char ** str_reply)
for (size_t i =0; i < l_certs_size; i++ ){ for (size_t i =0; i < l_certs_size; i++ ){
dap_chain_sign_t * l_sign = dap_chain_cert_sign(l_certs[i],&l_token_emission->hdr, sizeof(l_token_emission->hdr),0 ); dap_chain_sign_t * l_sign = dap_chain_cert_sign(l_certs[i],&l_token_emission->hdr, sizeof(l_token_emission->hdr),0 );
size_t l_sign_size = dap_chain_sign_get_size(l_sign); size_t l_sign_size = dap_chain_sign_get_size(l_sign);
l_token_emission_size += l_sign_size;
l_token_emission= DAP_REALLOC(l_token_emission, l_token_emission_size);
memcpy(l_token_emission->data.type_auth.signs+l_offset,l_sign,l_sign_size); memcpy(l_token_emission->data.type_auth.signs+l_offset,l_sign,l_sign_size);
l_offset+= l_sign_size; l_offset+= l_sign_size;
DAP_DELETE(l_sign); DAP_DELETE(l_sign);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment