diff --git a/dap-sdk/core/src/dap_common.c b/dap-sdk/core/src/dap_common.c index d36d88e4575a670ce1774896f706fbe4436932a1..ba91569fe2a3eda1583e5b60507af32fb6c5e5fd 100755 --- a/dap-sdk/core/src/dap_common.c +++ b/dap-sdk/core/src/dap_common.c @@ -224,14 +224,12 @@ void dap_set_log_tag_width(size_t a_width) { */ /** - * @brief dap_common_init call this function before using dap sdk modules - * - * @param a_console_title set console title. Can be result of dap_get_appname() - * @param a_log_file_path path to log file. Saved in s_log_file_path variable - * @param a_log_dirpath path to log directory. Saved in s_log_dir_path variable - * @return int (0 if succcess, -1 if error) + * @brief this function is used for dap sdk modules initialization + * @param a_console_title const char *: set console title. Can be result of dap_get_appname(). For example: cellframe-node + * @param a_log_file_path const char *: path to log file. Saved in s_log_file_path variable. For example: C:\\Users\\Public\\Documents\\cellframe-node\\var\\log\\cellframe-node.log + * @param a_log_dirpath const char *: path to log directory. Saved in s_log_dir_path variable. For example. C:\\Users\\Public\\Document\\cellframe-node\\var\\log + * @return int. (0 if succcess, -1 if error) */ - int dap_common_init( const char *a_console_title, const char *a_log_file_path, const char *a_log_dirpath) { // init randomer diff --git a/dap-sdk/core/src/dap_strfuncs.c b/dap-sdk/core/src/dap_strfuncs.c index f8944b88b34ef8fb956dfcb35036a7c188b07211..636a7c12f8e4b448de9d5ad0cd236d6a77774395 100755 --- a/dap-sdk/core/src/dap_strfuncs.c +++ b/dap-sdk/core/src/dap_strfuncs.c @@ -158,6 +158,14 @@ char *dap_utoa128(char *dest, uint128_t v, int base) return strcpy(dest, p); } +/** + * @brief dap_itoa128 + * + * @param a_str + * @param a_value + * @param a_base + * @return char* + */ char *dap_itoa128(char *a_str, int128_t a_value, int a_base) { char *p = a_str; diff --git a/dap-sdk/crypto/include/dap_hash.h b/dap-sdk/crypto/include/dap_hash.h index f247fa5b5807e92de400842819b043ef80fead63..f11b1f1334c4bae0715d873d6fbe0f35d0e8627f 100755 --- a/dap-sdk/crypto/include/dap_hash.h +++ b/dap-sdk/crypto/include/dap_hash.h @@ -56,6 +56,15 @@ extern "C" { //size_t dap_chain_hash_fast_to_str(dap_chain_hash_fast_t * a_hash, char * a_str, size_t a_str_max); int dap_chain_hash_fast_from_str( const char * a_hash_str, dap_hash_fast_t * a_hash); +/** + * @brief + * get SHA3_256 hash for specific data + * @param a_data_in input data + * @param a_data_in_size size of input data + * @param a_hash_out returned hash + * @return true + * @return false + */ static inline bool dap_hash_fast( const void *a_data_in, size_t a_data_in_size, dap_hash_fast_t *a_hash_out ) { if ( (a_data_in == NULL) || (a_data_in_size == 0) || (a_hash_out == NULL) ) @@ -73,8 +82,9 @@ static inline bool dap_hash_fast( const void *a_data_in, size_t a_data_in_size, /** * @brief dap_hash_fast_compare - * @param a_hash1 - * @param a_hash2 + * compare to hashes (dap_hash_fast_t) through memcmp + * @param a_hash1 - dap_hash_fast_t hash1 + * @param a_hash2 - dap_hash_fast_t hash2 * @return */ static inline bool dap_hash_fast_compare(dap_hash_fast_t *a_hash1, dap_hash_fast_t *a_hash2) diff --git a/dap-sdk/crypto/src/dap_cert_file.c b/dap-sdk/crypto/src/dap_cert_file.c index 52b76b66c0057c7e2a2ba72a4417778bb391a2d4..4ade46227435ada96cc2c985b5f997e5f3785bc4 100755 --- a/dap-sdk/crypto/src/dap_cert_file.c +++ b/dap-sdk/crypto/src/dap_cert_file.c @@ -37,11 +37,10 @@ static const char s_key_inheritor[] = "Inheritor"; /** * @brief dap_cert_file_save - * @param a_cert - * @param a_cert_file_path + * @param a_cert dap_cert_t certificate struucture + * @param a_cert_file_path path to certificate * @return int */ - int dap_cert_file_save(dap_cert_t * a_cert, const char * a_cert_file_path) { char * l_file_dir = dap_path_get_dirname(a_cert_file_path); @@ -77,11 +76,10 @@ int dap_cert_file_save(dap_cert_t * a_cert, const char * a_cert_file_path) /** * @brief s_balance_the_tree * - * @param a_reorder - * @param a_left_idx - * @param a_right_idx + * @param a_reorder dap_cert_file_aux_t + * @param a_left_idx size_t left tree node + * @param a_right_idx size_t right tree node */ - void s_balance_the_tree(dap_cert_file_aux_t *a_reorder, size_t a_left_idx, size_t a_right_idx) { if (a_left_idx == a_right_idx) { diff --git a/dap-sdk/crypto/src/dap_enc_base58.c b/dap-sdk/crypto/src/dap_enc_base58.c index ad6c897a31beddb1ee04489d91bdbc19c10e389f..0614fa39ef5c57d1f87efdd555a7d62f73485301 100755 --- a/dap-sdk/crypto/src/dap_enc_base58.c +++ b/dap-sdk/crypto/src/dap_enc_base58.c @@ -203,8 +203,8 @@ size_t dap_enc_base58_encode(const void * a_in, size_t a_in_size, char * a_out) /** * @brief dap_enc_base58_encode_to_str Encode to base58 and convert to string like '0xXXXXXXXXXXXXXXX' - * @param a_in - * @param a_in_size + * @param a_in buffer for encode + * @param a_in_size size of string * @return allocated string or NULL if error */ char* dap_enc_base58_encode_to_str(const void * a_in, size_t a_in_size) diff --git a/dap-sdk/crypto/src/dap_enc_salsa2012.c b/dap-sdk/crypto/src/dap_enc_salsa2012.c index 770fddefa31e4caaafecebf5e6e18c51e389549d..1e0ed1973bdafb3ecc6c2268445a9ce8e41a9709 100644 --- a/dap-sdk/crypto/src/dap_enc_salsa2012.c +++ b/dap-sdk/crypto/src/dap_enc_salsa2012.c @@ -13,6 +13,18 @@ #define SALSA20_KEY_SIZE 32 #define SALSA20_NONCE_SIZE 8 +/** + * @brief dap_enc_salsa2012_key_generate + * + * Generate key for Salsa20 crypto alghorithm. Key is stored in a_key->priv_key_data + * + * @param a_key - dap_enc_key key descriptor + * @param kex_buf - + * @param kex_size + * @param seed + * @param seed_size + * @param key_size + */ void dap_enc_salsa2012_key_generate(struct dap_enc_key * a_key, const void *kex_buf, size_t kex_size, const void * seed, size_t seed_size, size_t key_size) { @@ -34,6 +46,11 @@ void dap_enc_salsa2012_key_generate(struct dap_enc_key * a_key, const void *kex_ Keccak_HashFinal(&Keccak_ctx, a_key->priv_key_data); } +/** + * @brief dap_enc_salsa2012_key_delete + * + * @param a_key + */ void dap_enc_salsa2012_key_delete(struct dap_enc_key *a_key) { if(a_key->priv_key_data != NULL) @@ -43,7 +60,12 @@ void dap_enc_salsa2012_key_delete(struct dap_enc_key *a_key) } //a_key->priv_key_data_size = 0; } -//------SALSA2012----------- + +/** + * @brief dap_enc_salsa2012_key_new + * + * @param a_key + */ void dap_enc_salsa2012_key_new(struct dap_enc_key * a_key) { a_key->_inheritor = NULL; @@ -55,7 +77,15 @@ void dap_enc_salsa2012_key_new(struct dap_enc_key * a_key) a_key->dec_na = dap_enc_salsa2012_decrypt_fast; } - +/** + * @brief dap_enc_salsa2012_decrypt + * + * @param a_key + * @param a_in + * @param a_in_size + * @param a_out + * @return size_t + */ size_t dap_enc_salsa2012_decrypt(struct dap_enc_key *a_key, const void * a_in, size_t a_in_size, void ** a_out) { size_t l_out_size = a_in_size - SALSA20_NONCE_SIZE; @@ -70,6 +100,15 @@ size_t dap_enc_salsa2012_decrypt(struct dap_enc_key *a_key, const void * a_in, s return l_out_size; } +/** + * @brief dap_enc_salsa2012_encrypt + * + * @param a_key + * @param a_in + * @param a_in_size + * @param a_out + * @return size_t + */ size_t dap_enc_salsa2012_encrypt(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void ** a_out) { if(a_in_size <= 0) { @@ -84,11 +123,23 @@ size_t dap_enc_salsa2012_encrypt(struct dap_enc_key * a_key, const void * a_in, return l_out_size; } +/** + * @brief dap_enc_salsa2012_calc_encode_size + * + * @param size_in + * @return size_t + */ size_t dap_enc_salsa2012_calc_encode_size(const size_t size_in) { return size_in + SALSA20_NONCE_SIZE; } +/** + * @brief dap_enc_salsa2012_calc_decode_size + * + * @param size_in + * @return size_t + */ size_t dap_enc_salsa2012_calc_decode_size(const size_t size_in) { if(size_in <= SALSA20_NONCE_SIZE) { @@ -98,6 +149,16 @@ size_t dap_enc_salsa2012_calc_decode_size(const size_t size_in) return size_in - SALSA20_NONCE_SIZE; } +/** + * @brief dap_enc_salsa2012_decrypt_fast + * + * @param a_key + * @param a_in + * @param a_in_size + * @param a_out + * @param buf_out_size + * @return size_t + */ size_t dap_enc_salsa2012_decrypt_fast(struct dap_enc_key *a_key, const void * a_in, size_t a_in_size, void * a_out, size_t buf_out_size) { size_t l_out_size = a_in_size - SALSA20_NONCE_SIZE; @@ -111,6 +172,16 @@ size_t dap_enc_salsa2012_decrypt_fast(struct dap_enc_key *a_key, const void * a_ return l_out_size; } +/** + * @brief dap_enc_salsa2012_encrypt_fast + * + * @param a_key + * @param a_in + * @param a_in_size + * @param a_out + * @param buf_out_size + * @return size_t + */ size_t dap_enc_salsa2012_encrypt_fast(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void * a_out,size_t buf_out_size) { size_t l_out_size = a_in_size + SALSA20_NONCE_SIZE; diff --git a/dap-sdk/crypto/src/dap_enc_tesla.c b/dap-sdk/crypto/src/dap_enc_tesla.c index 07533bcf4b9def2b0ea65cfb2bb26bdea2c4e3bd..a67cb0618fe84f26f2ebc8c86304d56a8e6b1057 100755 --- a/dap-sdk/crypto/src/dap_enc_tesla.c +++ b/dap-sdk/crypto/src/dap_enc_tesla.c @@ -30,6 +30,16 @@ void dap_enc_sig_tesla_key_new(struct dap_enc_key *key) { // a_key->data --- Alice's public key // alice_priv --- Alice's private key // alice_msg_len --- Alice's private key length +/** + * @brief dap_enc_sig_tesla_key_new_generate + * + * @param key + * @param kex_buf + * @param kex_size + * @param seed + * @param seed_size + * @param key_size + */ void dap_enc_sig_tesla_key_new_generate(struct dap_enc_key * key, const void *kex_buf, size_t kex_size, const void * seed, size_t seed_size, size_t key_size) diff --git a/dap-sdk/net/core/dap_events.c b/dap-sdk/net/core/dap_events.c index f32d76083548e87bebfa391088e32364ef00ceaf..a415e2c6b59c6a63dd2c066474bb649aa7d5feb8 100644 --- a/dap-sdk/net/core/dap_events.c +++ b/dap-sdk/net/core/dap_events.c @@ -104,6 +104,11 @@ static dap_worker_t **s_workers = NULL; static dap_thread_t *s_threads = NULL; static dap_events_t * s_events_default = NULL; +/** + * @brief dap_get_cpu_count + * + * @return uint32_t + */ uint32_t dap_get_cpu_count( ) { #ifdef _WIN32 @@ -144,6 +149,11 @@ uint32_t dap_get_cpu_count( ) #endif } +/** + * @brief dap_cpu_assign_thread_on + * + * @param a_cpu_id + */ void dap_cpu_assign_thread_on(uint32_t a_cpu_id) { #ifndef DAP_OS_WINDOWS @@ -253,6 +263,11 @@ dap_events_t * dap_events_new( ) return ret; } +/** + * @brief dap_events_get_default + * simply return s_events_default + * @return dap_events_t* + */ dap_events_t* dap_events_get_default( ) { return s_events_default; @@ -272,6 +287,13 @@ void dap_events_delete( dap_events_t *a_events ) } } +/** + * @brief dap_events_remove_and_delete_socket_unsafe + * calls dap_events_socket_remove_and_delete_unsafe + * @param a_events + * @param a_socket + * @param a_preserve_inheritor + */ void dap_events_remove_and_delete_socket_unsafe(dap_events_t *a_events, dap_events_socket_t *a_socket, bool a_preserve_inheritor) { (void) a_events; @@ -364,7 +386,7 @@ int dap_events_start( dap_events_t *a_events ) /** * @brief dap_events_wait - * @param sh + * @param dap_events_t *a_events * @return */ int dap_events_wait( dap_events_t *a_events ) diff --git a/dap-sdk/net/server/http_server/dap_http.c b/dap-sdk/net/server/http_server/dap_http.c index b931d229d80fee1d272d23c0396e55eaad071893..7af054d9eac9952a0cc847367ea1f8ecbbe6775e 100644 --- a/dap-sdk/net/server/http_server/dap_http.c +++ b/dap-sdk/net/server/http_server/dap_http.c @@ -130,12 +130,29 @@ void dap_http_delete( dap_server_t *a_server, void * a_arg ) /** - * @brief dap_http_add_proc Add custom procesor for the HTTP server - * @param a_http Server's instance - * @param a_url_path Part of URL to be processed - * @param a_read_callback Callback for read in DATA state - * @param a_write_callback Callback for write in DATA state - * @param a_error_callback Callback for error processing + * @brief dap_http_add_proc Add custom procesor for the HTTP server + * + * @param a_http Server's instance + * @param a_url_path Part of URL to be processed + * @param a_inheritor Internal data specific to the current URL processor + * @param a_new_callback additional callback function + * + * Called in s_queue_add_es_callback + * if ( ! l_es_new->is_initalized ){ + if (l_es_new->callbacks.new_callback) + l_es_new->callbacks.new_callback(l_es_new, NULL); + l_es_new->is_initalized = true; + } + * @param a_delete_callback callback which is called, when HTTP server object is deleted + * @param a_headers_read_callback Callback for read HTTP headers callback + * @param a_headers_write_callback Callback for write HTTP headers callback + * @param a_data_read_callback Callback for read in DATA state + * @param a_data_write_callback Callback for write in DATA state + * @param a_error_callback Callback for error processing + * @note + * data_read_callback is called, when headers is finished in body request, and next part of + * body request contains remaining part of buffer. If data contains only in header, a_data_read_callback is not called. + * @return dap_http_url_proc_t* */ dap_http_url_proc_t * dap_http_add_proc(dap_http_t *a_http, const char *a_url_path, void *a_inheritor ,dap_http_client_callback_t a_new_callback diff --git a/modules/chain/dap_chain.c b/modules/chain/dap_chain.c index cda76b3195794ca835f41ddc99a1fedc67a4e984..ca4cf49bd85359e778496b925da4e3cad7c6fec0 100644 --- a/modules/chain/dap_chain.c +++ b/modules/chain/dap_chain.c @@ -129,12 +129,14 @@ void dap_chain_enum_unlock(void) } /** - * @brief dap_chain_create - * @param a_chain_net_name - * @param a_chain_name - * @param a_chain_net_id - * @param a_chain_id - * @return + * @brief + * create dap chain object + * @param a_ledger dap_ledger_t ledger object + * @param a_chain_net_name blockchain network name + * @param a_chain_name chain name + * @param a_chain_net_id + * @param a_chain_id chain id + * @return dap_chain_t* */ dap_chain_t * dap_chain_create(dap_ledger_t* a_ledger, const char * a_chain_net_name, const char * a_chain_name, dap_chain_net_id_t a_chain_net_id, dap_chain_id_t a_chain_id ) { @@ -159,8 +161,9 @@ dap_chain_t * dap_chain_create(dap_ledger_t* a_ledger, const char * a_chain_net_ } /** - * @brief dap_chain_delete - * @param a_chain + * @brief + * delete dap chain object + * @param a_chain dap_chain_t object */ void dap_chain_delete(dap_chain_t * a_chain) { @@ -234,6 +237,12 @@ dap_chain_t * dap_chain_find_by_id(dap_chain_net_id_t a_chain_net_id,dap_chain_i return l_ret_item ? l_ret_item->chain : NULL; } +/** + * @brief s_chain_type_from_str + * get dap_chain_type_t value by str value a_type_str + * @param a_type_str str values:token,emission,transaction,ca + * @return dap_chain_type_t + */ static dap_chain_type_t s_chain_type_from_str(const char *a_type_str) { if(!dap_strcmp(a_type_str, "token")) { @@ -251,6 +260,12 @@ static dap_chain_type_t s_chain_type_from_str(const char *a_type_str) return CHAIN_TYPE_LAST; } +/** + * @brief s_datum_type_from_str + * get datum type (DAP_CHAIN_DATUM_TOKEN_DECL, DAP_CHAIN_DATUM_TOKEN_EMISSION, DAP_CHAIN_DATUM_TX) by str value + * @param a_type_str datum type in string value (token,emission,transaction) + * @return uint16_t + */ static uint16_t s_datum_type_from_str(const char *a_type_str) { if(!dap_strcmp(a_type_str, "token")) { @@ -265,6 +280,12 @@ static uint16_t s_datum_type_from_str(const char *a_type_str) return DAP_CHAIN_DATUM_CUSTOM; } +/** + * @brief s_chain_type_convert + * convert dap_chain_type_t to DAP_CNAIN* constants + * @param a_type - dap_chain_type_t a_type [CHAIN_TYPE_TOKEN, CHAIN_TYPE_EMISSION, CHAIN_TYPE_TX] + * @return uint16_t + */ static uint16_t s_chain_type_convert(dap_chain_type_t a_type) { switch (a_type) { @@ -280,11 +301,12 @@ static uint16_t s_chain_type_convert(dap_chain_type_t a_type) } /** - * @brief dap_chain_load_from_cfg - * @param a_chain_net_name - * @param a_chain_net_id - * @param a_chain_cfg_path - * @return + * Loading chain from config file + * @param a_ledger - ledger object + * @param a_chain_net_name - chain name, taken from config, for example - "home21-network" + * @param a_chain_net_id - dap_chain_net_id_t chain network identification + * @param a_chain_cfg_name chain config name, for example "network/home21-network/chain-0" + * @return dap_chain_t* */ dap_chain_t * dap_chain_load_from_cfg(dap_ledger_t* a_ledger, const char * a_chain_net_name,dap_chain_net_id_t a_chain_net_id, const char * a_chain_cfg_name) { diff --git a/modules/chain/dap_chain_cell.c b/modules/chain/dap_chain_cell.c index e4b10ca85ab599a692f610722edf77ace4c01fbf..3a0fe517d071677f2cc5d3839f0135a7753da15a 100644 --- a/modules/chain/dap_chain_cell.c +++ b/modules/chain/dap_chain_cell.c @@ -66,6 +66,13 @@ int dap_chain_cell_init(void) return 0; } +/** + * @brief dap_chain_cell_find_by_id + * get dap_chain_cell_t object by cell (shard) id + * @param a_chain dap_chain_t object + * @param a_cell_id dap_chain_cell_id_t cell (shard) id + * @return dap_chain_cell_t* + */ dap_chain_cell_t * dap_chain_cell_find_by_id(dap_chain_t * a_chain, dap_chain_cell_id_t a_cell_id) { if (!a_chain->cells) @@ -78,9 +85,11 @@ dap_chain_cell_t * dap_chain_cell_find_by_id(dap_chain_t * a_chain, dap_chain_ce } /** - * @brief dap_chain_cell_create_fill - * a_cell_id if <0 then not used - * @return + * @brief + * a_cell_id if < 0 then not used + * @param a_chain dap_chain_t object + * @param a_cell_id dap_chain_cell_id_t cell (shard) id + * @return dap_chain_cell_t* */ dap_chain_cell_t * dap_chain_cell_create_fill(dap_chain_t * a_chain, dap_chain_cell_id_t a_cell_id) { @@ -94,6 +103,14 @@ dap_chain_cell_t * dap_chain_cell_create_fill(dap_chain_t * a_chain, dap_chain_c return l_cell; } +/** + * @brief dap_chain_cell_create_fill2 + * set l_cell->file_storage_path and l_cell->id.uint64 from name of chain. + * For example, 0.dchaincell. 0 - chain id, dchaincell - name of file + * @param a_chain - chain object + * @param a_filename - chain filename, for example "0.dchaincell" + * @return dap_chain_cell_t* + */ dap_chain_cell_t * dap_chain_cell_create_fill2(dap_chain_t * a_chain, const char *a_filename) { dap_chain_cell_t * l_cell = DAP_NEW_Z(dap_chain_cell_t); @@ -106,6 +123,11 @@ dap_chain_cell_t * dap_chain_cell_create_fill2(dap_chain_t * a_chain, const char return l_cell; } +/** + * @brief + * close a_cell->file_storage file object + * @param a_cell dap_chain_cell_t object + */ void dap_chain_cell_close(dap_chain_cell_t *a_cell) { if(!a_cell) @@ -117,8 +139,9 @@ void dap_chain_cell_close(dap_chain_cell_t *a_cell) } /** - * @brief dap_chain_cell_delete - * @return + * @brief + * free chain cell objects + * @param a_cell dap_chain_cell_t object */ void dap_chain_cell_delete(dap_chain_cell_t *a_cell) { @@ -142,9 +165,9 @@ void dap_chain_cell_delete(dap_chain_cell_t *a_cell) } /** - * @brief dap_chain_cell_load - * @param a_chain - * @param a_cell_file_path + * load cell file, which is pointed in a_cell_file_path variable, for example "0.dchaincell" + * @param a_chain dap_chain_t object + * @param a_cell_file_path contains name of chain, for example "0.dchaincell" * @return */ int dap_chain_cell_load(dap_chain_t * a_chain, const char * a_cell_file_path) @@ -208,10 +231,12 @@ int dap_chain_cell_load(dap_chain_t * a_chain, const char * a_cell_file_path) /** * @brief s_cell_file_append - * @param a_cell - * @param a_atom - * @param a_atom_size - * @return + * add atoms to selected chain + * @param a_cell - cell object. Contains file path to cell storage data, for example - "0.dchaincell" + * a_cell->chain contains + * name - "zerochain" + * net_name - "kelvin-testnet" + * filepath - "C:\\Users\\Public\\Documents\\cellframe-node\\var\\lib\\network\\kelvin-testnet\\zerochain\\/0.dchaincell */ int dap_chain_cell_file_append( dap_chain_cell_t * a_cell, const void* a_atom, size_t a_atom_size) { @@ -307,9 +332,9 @@ int dap_chain_cell_file_append( dap_chain_cell_t * a_cell, const void* a_atom, s } /** - * @brief dap_chain_cell_file_update - * @param a_cell - * @return + * @brief + * return dap_chain_cell_file_append(a_cell, NULL, 0); + * @param a_cell dap_chain_cell_t */ int dap_chain_cell_file_update( dap_chain_cell_t * a_cell) { diff --git a/modules/chain/dap_chain_cs.c b/modules/chain/dap_chain_cs.c index 491a35002a51330d1a2c4cb69dc8d37bf5d81046..d398b361eaa8ae5f1174b493f28b5d8c6a084725 100644 --- a/modules/chain/dap_chain_cs.c +++ b/modules/chain/dap_chain_cs.c @@ -63,8 +63,8 @@ void dap_chain_cs_deinit(void) /** * @brief dap_chain_class_add - * @param a_cs_str - * @param a_callback_init + * @param a_cs_str consensus name + * @param a_callback_init callback function */ void dap_chain_cs_type_add (const char * a_cs_str, dap_chain_callback_new_cfg_t a_callback_init) { @@ -110,8 +110,11 @@ void dap_chain_cs_add (const char * a_cs_str, dap_chain_callback_new_cfg_t a_ca /** * @brief dap_chain_cs_create - * @param a_chain - * @param a_chain_cfg + * get consensus from chain cfg file [dag_pos, dag_poa, block_poa, none] + * dap_config_get_item_str( a_chain_cfg, "chain", "consensus"); + * verify if consensus was created by dap_chain_cs_add function + * @param a_chain dap_chain_t chain object + * @param a_chain_cfg dap_config_t * @return */ int dap_chain_cs_create(dap_chain_t * a_chain, dap_config_t * a_chain_cfg) diff --git a/modules/chain/dap_chain_ledger.c b/modules/chain/dap_chain_ledger.c index 69d885f18eadff5451d35e3086a7ab7a05624218..16d33b959bfa72a11dd21a33e94f05e49aeb368f 100644 --- a/modules/chain/dap_chain_ledger.c +++ b/modules/chain/dap_chain_ledger.c @@ -205,6 +205,7 @@ static bool s_debug_more = false; /** * @brief dap_chain_ledger_init + * current function version set s_debug_more parameter, if it define in config, and returns 0 * @return */ int dap_chain_ledger_init() @@ -215,6 +216,7 @@ int dap_chain_ledger_init() /** * @brief dap_chain_ledger_deinit + * nothing do */ void dap_chain_ledger_deinit() { @@ -222,7 +224,9 @@ void dap_chain_ledger_deinit() } /** - * Create dap_ledger_t structure + * @brief dap_chain_ledger_handle_new + * Create empty dap_ledger_t structure + * @return dap_ledger_t* */ static dap_ledger_t * dap_chain_ledger_handle_new(void) { @@ -404,10 +408,11 @@ int dap_chain_ledger_token_add(dap_ledger_t * a_ledger, dap_chain_datum_token_t } /** - * @brief s_token_tsd_parse - * @param a_ledger - * @param a_token - * @param a_token_size + * @param a_ledger + * @param a_token_item + * @param a_token + * @param a_token_size + * @return int */ static int s_token_tsd_parse(dap_ledger_t * a_ledger, dap_chain_ledger_token_item_t *a_token_item , dap_chain_datum_token_t * a_token, size_t a_token_size) { @@ -1033,9 +1038,15 @@ void dap_chain_ledger_load_cache(dap_ledger_t *a_ledger) } /** - * @brief dap_chain_ledger_create - * @param a_check_flags - * @return dap_ledger_t + * @brief + * create ledger for specific net + * load ledger cache + * @param a_check_flags checking flags + * DAP_CHAIN_LEDGER_CHECK_TOKEN_EMISSION + * DAP_CHAIN_LEDGER_CHECK_CELLS_DS + * DAP_CHAIN_LEDGER_CHECK_CELLS_DS + * @param a_net_name char * network name, for example "kelvin-testnet" + * @return dap_ledger_t* */ dap_ledger_t* dap_chain_ledger_create(uint16_t a_check_flags, char *a_net_name) { diff --git a/modules/chain/dap_chain_vf.c b/modules/chain/dap_chain_vf.c index c35a2366e85a22bc4029c50a0935bb550ec7a9f9..5331558c69362ca447b37d9e5b80ea3a84b63a62 100644 --- a/modules/chain/dap_chain_vf.c +++ b/modules/chain/dap_chain_vf.c @@ -28,7 +28,9 @@ #define LOG_TAG "dap_chain_vf" /** - * @brief dap_chain_vf_init + * @brief + * empty function + * return 0 * @return */ int dap_chain_vf_init() @@ -45,9 +47,9 @@ void dap_chain_vf_deinit() } /** - * @brief dap_chain_vf_add - * @param a_vf_id - * @param a_callback + * @brief + * empty function + * return 0 * @return */ int dap_chain_vf_add(dap_chain_vf_id_t a_vf_id, dap_chain_vf_callback_t a_callback) @@ -57,6 +59,8 @@ int dap_chain_vf_add(dap_chain_vf_id_t a_vf_id, dap_chain_vf_callback_t a_callba /** * @brief dap_chain_vf_check + * empty function + * return true * @param a_vf_id * @param a_ledger * @param a_receipt diff --git a/modules/channel/chain/dap_stream_ch_chain.c b/modules/channel/chain/dap_stream_ch_chain.c index bb60eb3945cfff89f9f527b13e5c1f32ed78eaef..9bd440266b666d73d85e0d04797662780db40ba1 100644 --- a/modules/channel/chain/dap_stream_ch_chain.c +++ b/modules/channel/chain/dap_stream_ch_chain.c @@ -447,9 +447,9 @@ static bool s_sync_update_gdb_proc_callback(dap_proc_thread_t *a_thread, void *a } /** - * @brief s_chain_in_pkt_callback - * @param a_thread - * @param a_arg + * @brief s_sync_in_chains_callback + * @param a_thread dap_proc_thread_t + * @param a_arg void * @return */ static bool s_sync_in_chains_callback(dap_proc_thread_t *a_thread, void *a_arg) diff --git a/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c b/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c index 3613d3acf082ad795c68a5daa4fe691fe1a8d0f1..09ffc0a59e5f8729d1d6925b7688f54535f5ab19 100644 --- a/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c +++ b/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c @@ -74,7 +74,9 @@ static int s_cli_dag_poa(int argc, char ** argv, void *arg_func, char **str_repl static bool s_seed_mode = false; /** - * @brief dap_chain_cs_dag_poa_init + * @brief + * init consensus dag_poa + * read parameters from config and register dag_poa commands to cellframe-node-cli * @return */ int dap_chain_cs_dag_poa_init(void) @@ -100,9 +102,10 @@ void dap_chain_cs_dag_poa_deinit(void) /** - * @brief s_cli_dag_poa - * @param argc - * @param argv + * @brief + * parse and execute cellframe-node-cli dag-poa commands + * @param argc arguments count + * @param argv array with arguments * @param arg_func * @param str_reply * @return @@ -219,8 +222,11 @@ static int s_cli_dag_poa(int argc, char ** argv, void *arg_func, char **a_str_re /** * @brief s_cs_callback - * @param a_chain - * @param a_chain_cfg + * dap_chain_callback_new_cfg_item_t->callback_init function. + * get dag-poa consensus parameters from config + * and set dap_chain_cs_dag_t l_dag->chain->callback_created = s_callback_new + * @param a_chain dap_chain_t chain object + * @param a_chain_cfg chain config object */ static int s_callback_new(dap_chain_t * a_chain, dap_config_t * a_chain_cfg) { @@ -260,9 +266,10 @@ static int s_callback_new(dap_chain_t * a_chain, dap_config_t * a_chain_cfg) } /** - * @brief s_callback_created - * @param a_chain - * @param a_chain_cfg + * @brief create callback load certificate for event signing for specific chain + * path to certificate iw written to chain config file in dag_poa section + * @param a_chain chain object (for example, a_chain.name = zerochain, a_chain.network = kelvin-testnet) + * @param a_chain_net_cfg dap_config_t network config object * @return */ static int s_callback_created(dap_chain_t * a_chain, dap_config_t *a_chain_net_cfg) @@ -287,8 +294,9 @@ static int s_callback_created(dap_chain_t * a_chain, dap_config_t *a_chain_net_c } /** - * @brief s_chain_cs_dag_callback_delete - * @param a_dag + * @brief + * delete dap_chain_cs_dag_poa_pvt_t callback + * @param a_dag dap_chain_cs_dag_t object */ static void s_callback_delete(dap_chain_cs_dag_t * a_dag) { @@ -312,12 +320,14 @@ static void s_callback_delete(dap_chain_cs_dag_t * a_dag) } /** - * @brief s_callback_event_create - * @param a_dag - * @param a_datum - * @param a_hashes - * @param a_hashes_count - * @return + * @brief + * callback for create event operation + * @param a_dag dap_chain_cs_dag_t DAG object + * @param a_datum dap_chain_datum_t + * @param a_hashes dap_chain_hash_fast_t + * @param a_hashes_count size_t + * @param a_dag_event_size size_t + * @return dap_chain_cs_dag_event_t* */ static dap_chain_cs_dag_event_t * s_callback_event_create(dap_chain_cs_dag_t * a_dag, dap_chain_datum_t * a_datum, dap_chain_hash_fast_t * a_hashes, size_t a_hashes_count, size_t* a_event_size) @@ -340,10 +350,12 @@ static dap_chain_cs_dag_event_t * s_callback_event_create(dap_chain_cs_dag_t * a /** - * @brief s_chain_cs_dag_callback_event_verify - * @param a_dag - * @param a_dag_event - * @return + * @brief + * function makes event singing verification + * @param a_dag dag object + * @param a_dag_event dap_chain_cs_dag_event_t + * @param a_dag_event_size size_t size of event object + * @return int */ static int s_callback_event_verify(dap_chain_cs_dag_t * a_dag, dap_chain_cs_dag_event_t * a_dag_event, size_t a_dag_event_size) { diff --git a/modules/consensus/dag-pos/dap_chain_cs_dag_pos.c b/modules/consensus/dag-pos/dap_chain_cs_dag_pos.c index fc2be92cdd3b535d1d68fd2438eb2ccc71759a6f..9b23ff9b298e08245528c59ca01644768773cec9 100644 --- a/modules/consensus/dag-pos/dap_chain_cs_dag_pos.c +++ b/modules/consensus/dag-pos/dap_chain_cs_dag_pos.c @@ -178,12 +178,14 @@ static void s_callback_delete(dap_chain_cs_dag_t * a_dag) } /** - * @brief s_callback_event_create - * @param a_dag - * @param a_datum - * @param a_hashes - * @param a_hashes_count - * @return + * @brief + * create event + * @param a_dag + * @param a_datum + * @param a_hashes + * @param a_hashes_count + * @param a_dag_event_size + * @return dap_chain_cs_dag_event_t* */ static dap_chain_cs_dag_event_t * s_callback_event_create(dap_chain_cs_dag_t * a_dag, dap_chain_datum_t * a_datum, dap_chain_hash_fast_t * a_hashes, size_t a_hashes_count, diff --git a/modules/consensus/none/dap_chain_cs_none.c b/modules/consensus/none/dap_chain_cs_none.c index b3bae67c29784c400075212ca7816f8bb8fcb6a5..12ada2512c703bfbb658a95031e66389a36eac7c 100644 --- a/modules/consensus/none/dap_chain_cs_none.c +++ b/modules/consensus/none/dap_chain_cs_none.c @@ -107,6 +107,7 @@ static int s_cs_callback_new(dap_chain_t * a_chain, dap_config_t * a_chain_cfg) /** * @brief dap_chain_cs_gdb_init + * Initialize GDB chain items organization class * @return */ int dap_chain_gdb_init(void) diff --git a/modules/global-db/dap_chain_global_db.c b/modules/global-db/dap_chain_global_db.c index 991c83a21d5fec114b05b29a3a4b080074660798..7fa502006bcba5a694502c95fa519e6291be8dca 100644 --- a/modules/global-db/dap_chain_global_db.c +++ b/modules/global-db/dap_chain_global_db.c @@ -77,10 +77,12 @@ static sync_group_item_t *s_sync_group_extra_items = NULL; static bool s_track_history = false; /** - * @brief dap_chain_global_db_add_sync_group - * @details Add group name for synchronization - * @param a_group_prefix - */ + * @brief Adds a group name for synchronization. + * @param a_group_prefix a prefix of the group name + * @param a_callback a callback function + * @param a_arg a pointer to an argument + * @return (none) +*/ void dap_chain_global_db_add_sync_group(const char *a_group_prefix, dap_global_db_obj_callback_notify_t a_callback, void *a_arg) { sync_group_item_t * l_item = DAP_NEW_Z(sync_group_item_t); @@ -92,9 +94,11 @@ void dap_chain_global_db_add_sync_group(const char *a_group_prefix, dap_global_d } /** - * @brief dap_chain_global_db_add_sync_extra_group - * @details Add group name for synchronization with especially node addresses - * @param a_group_prefix + * @brief Adds a group name for synchronization with especially node addresses. + * @param a_group_mask a group mask string + * @param a_callback a callabck function + * @param a_arg a pointer to an argument + * @return (none) */ void dap_chain_global_db_add_sync_extra_group(const char *a_group_mask, dap_global_db_obj_callback_notify_t a_callback, void *a_arg) { @@ -106,6 +110,11 @@ void dap_chain_global_db_add_sync_extra_group(const char *a_group_mask, dap_glob HASH_ADD_STR(s_sync_group_extra_items, group_mask, l_item); } +/** + * @brief Gets a list of a group mask. + * @param a_table a table + * @return Returns a pointer to a list of a group mask. + */ dap_list_t *dap_chain_db_get_sync_groups_internal(sync_group_item_t *a_table) { dap_list_t *l_ret = NULL; @@ -116,18 +125,29 @@ dap_list_t *dap_chain_db_get_sync_groups_internal(sync_group_item_t *a_table) return l_ret; } +/** + * @brief Gets a list of a group mask for s_sync_group_items. + * @return Returns a pointer to a list of a group mask. + */ dap_list_t *dap_chain_db_get_sync_groups() { return dap_chain_db_get_sync_groups_internal(s_sync_group_items); } +/** + * @brief Gets a list of a group mask for s_sync_group_items. + * @param a_table a table + * @return Returns a pointer to a list of a group mask. + */ dap_list_t *dap_chain_db_get_sync_extra_groups() { return dap_chain_db_get_sync_groups_internal(s_sync_group_extra_items); } /** - * Clean struct dap_global_db_obj_t + * @brief Deallocates memory of a key and a value members of an obj structure. + * @param obj a pointer to the structure + * @return (none) */ void dap_chain_global_db_obj_clean(dap_global_db_obj_t *obj) { @@ -140,7 +160,9 @@ void dap_chain_global_db_obj_clean(dap_global_db_obj_t *obj) } /** - * Delete struct dap_global_db_obj_t + * @brief Deallocates memory of an obj structure. + * @param obj a pointer to the object + * @return (none) */ void dap_chain_global_db_obj_delete(dap_global_db_obj_t *obj) { @@ -149,7 +171,10 @@ void dap_chain_global_db_obj_delete(dap_global_db_obj_t *obj) } /** - * Delete mass of struct dap_global_db_obj_t + * @brief Deallocates memory of an objs array. + * @param objs a pointer to the first object of the array + * @param a_count a number of objects in the array + * @return (none) */ void dap_chain_global_db_objs_delete(dap_global_db_obj_t *objs, size_t a_count) { @@ -160,9 +185,10 @@ void dap_chain_global_db_objs_delete(dap_global_db_obj_t *objs, size_t a_count) } /** - * @brief dap_chain_global_db_init - * @param g_config - * @return + * @brief Initializes a database by g_config structure. + * @note You should call this function before calling any other functions in this library. + * @param g_config a pointer to the configuration structure + * @return Returns 0 if successful; otherwise, <0. */ int dap_chain_global_db_init(dap_config_t * g_config) { @@ -181,8 +207,10 @@ int dap_chain_global_db_init(dap_config_t * g_config) } /** - * @brief dap_chain_global_db_deinit - */ + * @brief Deinitialize a database. + * @note You should call this function at the end. + * @return (none) +*/ void dap_chain_global_db_deinit(void) { lock(); @@ -207,8 +235,10 @@ void dap_chain_global_db_deinit(void) } /** - * @brief dap_chain_global_db_flush - * @return + * @brief Gets an object from a database by a_key and a_group arguments. + * @param a_key an object key string + * @param a_group a group name string + * @return If successful, returns a pointer to the item, otherwise NULL. */ int dap_chain_global_db_flush(void){ lock(); @@ -218,9 +248,10 @@ int dap_chain_global_db_flush(void){ } /** - * Get entry from base - * - * return dap_store_obj_t* + * @brief Gets an object from a database by a_key and a_group arguments. + * @param a_key an object key string + * @param a_group a group name string + * @return If successful, returns a pointer to the item, otherwise NULL. */ void* dap_chain_global_db_obj_get(const char *a_key, const char *a_group) { @@ -231,11 +262,12 @@ void* dap_chain_global_db_obj_get(const char *a_key, const char *a_group) } /** - * @brief dap_chain_global_db_obj_gr_get - * @param a_key - * @param a_data_out - * @param a_group - * @return + * @brief Gets an array consisting of a_data_len_out objects from a database by a_key and a_group arguments. + * @param a_key an object key string + * @param a_data_len_out[in] a number of objects to be gotten, if NULL - no limits + * @param a_data_len_out[out] a number of objects that were gotten + * @param a_group a group name string + * @return If successful, returns a pointer to the first item in the array; otherwise NULL. */ dap_store_obj_t* dap_chain_global_db_obj_gr_get(const char *a_key, size_t *a_data_len_out, const char *a_group) { @@ -252,11 +284,12 @@ dap_store_obj_t* dap_chain_global_db_obj_gr_get(const char *a_key, size_t *a_dat } /** - * @brief dap_chain_global_db_gr_get - * @param a_key - * @param a_data_out - * @param a_group - * @return + * @brief Gets an object value from database by a_key and a_group. + * @param a_key an object key string + * @param a_data_out[in] a number of objects to be gotten, if NULL - no limits + * @param a_data_out[out] a length of values that were gotten + * @param a_group a group name string + * @return If successful, returns a pointer to the object value. */ uint8_t * dap_chain_global_db_gr_get(const char *a_key, size_t *a_data_len_out, const char *a_group) { @@ -282,9 +315,12 @@ uint8_t * dap_chain_global_db_get(const char *a_key, size_t *a_data_len_out) return dap_chain_global_db_gr_get(a_key, a_data_len_out, GROUP_LOCAL_GENERAL); } - /** - * Add info about the deleted entry to the base + * @brief Adds info about the deleted entry to the database. + * @param a_key an object key string + * @param a_group a group name string + * @param a_timestamp an object time stamp + * @return True if successful, false otherwise. */ static bool global_db_gr_del_add(char *a_key,const char *a_group, time_t a_timestamp) { @@ -310,7 +346,10 @@ static bool global_db_gr_del_add(char *a_key,const char *a_group, time_t a_times } /** - * Delete info about the deleted entry from the base + * @brief Deletes info about the deleted object from the database + * @param a_key an object key string, looked like "0x8FAFBD00B..." + * @param a_group a group name string, for example "kelvin-testnet.nodes" + * @return If successful, returns true; otherwise, false. */ static bool global_db_gr_del_del(char *a_key, const char *a_group) { @@ -334,7 +373,10 @@ static bool global_db_gr_del_del(char *a_key, const char *a_group) } /** - * Get timestamp of the deleted entry + * @brief Gets time stamp of the deleted object by a_group and a_key arguments. + * @param a_group a group name sring, for example "kelvin-testnet.nodes" + * @param a_key an object key string, looked like "0x8FAFBD00B..." + * @return If successful, a time stamp, otherwise 0. */ time_t global_db_gr_del_get_timestamp(const char *a_group, char *a_key) { @@ -360,17 +402,20 @@ time_t global_db_gr_del_get_timestamp(const char *a_group, char *a_key) return l_timestamp; } - +/** + * @brief Deletes item from a database by a a_key for the "local.general" group. + * @param a_key an object key string + * @return True if successful, false otherwise. + */ bool dap_chain_global_db_del(char *a_key) { return dap_chain_global_db_gr_del(a_key, GROUP_LOCAL_GENERAL); } /** - * Read last item in global_db - * - * @param data_size[out] size of output array - * @return array (note:not Null-terminated string) on NULL in case of an error + * @brief Gets a last item from a database by a_group. + * @param a_group a group name string + * @return If successful, a pointer to the object; otherwise NULL. */ dap_store_obj_t* dap_chain_global_db_get_last(const char *a_group) { @@ -382,10 +427,12 @@ dap_store_obj_t* dap_chain_global_db_get_last(const char *a_group) } /** - * Read the entire database with condition into an array of size bytes - * - * @param data_size[out] size of output array - * @return array (note:not Null-terminated string) on NULL in case of an error + * @brief Gets objects from a database by a_group_name and a_first_id. + * @param a_group a group name string + * @param a_first_id a first id + * @param a_objs_count[in] a number of object to be read, if 0 - no limits + * @param a_objs_count[out] a number of object were read + * @return If successful, a pointer to objects; otherwise NULL. */ dap_store_obj_t* dap_chain_global_db_cond_load(const char *a_group, uint64_t a_first_id, size_t *a_objs_count) { @@ -397,10 +444,11 @@ dap_store_obj_t* dap_chain_global_db_cond_load(const char *a_group, uint64_t a_f } /** - * Read the entire database into an array of size bytes - * - * @param data_size[out] size of output array - * @return array (note:not Null-terminated string) on NULL in case of an error + * @brief Gets all data from a database by a_group. + * @param a_group a group name string + * @param a_data_size[in] a poiter to return a number of data + * @param a_data_size[out] a number of data + * @return If successful, a pointer to data; otherwise NULL. */ dap_global_db_obj_t* dap_chain_global_db_gr_load(const char *a_group, size_t *a_data_size_out) { @@ -427,15 +475,19 @@ dap_global_db_obj_t* dap_chain_global_db_gr_load(const char *a_group, size_t *a_ return l_data; } +/** + * @brief Gets all data from a database for the "local.general" group + */ dap_global_db_obj_t* dap_chain_global_db_load(size_t *a_data_size_out) { return dap_chain_global_db_gr_load(GROUP_LOCAL_GENERAL, a_data_size_out); } /** - * @brief extract_group_mask - * @param a_group - * @return + * @brief Finds item by a_items and a_group + * @param a_items items + * @param a_group a group name string + * @return */ static sync_group_item_t *find_item_by_mask(sync_group_item_t *a_items, const char *a_group) { @@ -447,7 +499,12 @@ static sync_group_item_t *find_item_by_mask(sync_group_item_t *a_items, const ch return NULL; } - +/** + * @brief Adds data to the history log + * + * @param a_store_data a pointer to an object + * @return (none) + */ void dap_global_db_obj_track_history(void* a_store_data) { if (!s_track_history) @@ -482,13 +539,13 @@ void dap_global_db_obj_track_history(void* a_store_data) /** - * @brief dap_chain_global_db_gr_set - * @param a_key - * @param a_value - * @param a_value_len - * @param a_group + * @brief Adds a value to a database. + * @param a_key a object key string + * @param a_value a value to be added + * @param a_value_len length of value. If a_value_len=-1, the function calculates length. + * @param a_group a group name string * @details Set one entry to base. IMPORTANT: a_key and a_value should be passed without free after (it will be released by gdb itself) - * @return + * @return True if successful, false otherwise. */ bool dap_chain_global_db_gr_set(char *a_key, void *a_value, size_t a_value_len, const char *a_group) { @@ -515,13 +572,22 @@ bool dap_chain_global_db_gr_set(char *a_key, void *a_value, size_t a_value_len, return !l_res; } +/** + * @brief Adds a value to a database for the "local.general" group + * @param a_value a value to be added + * @param a_value_len length of value. If a_value_len=-1, the function counts length. + * @return True if successful, false otherwise. + */ bool dap_chain_global_db_set( char *a_key, void *a_value, size_t a_value_len) { return dap_chain_global_db_gr_set(a_key, a_value, a_value_len, GROUP_LOCAL_GENERAL); } -/** - * Delete entry from base +/** + * @brief Deletes object from a database by a a_key and a_group arguments. + * @param a_key a object key string + * @param a_group a group name string + * @return True if object was deleted or false otherwise. */ bool dap_chain_global_db_gr_del(char *a_key,const char *a_group) { @@ -546,9 +612,10 @@ bool dap_chain_global_db_gr_del(char *a_key,const char *a_group) } /** - * Write to the database from an array of data_size bytes - * - * @return + * @brief Saves(deletes) objects to (from) a database. + * @param a_store_data a pointer to objects + * @param a_objs_count a number of objects + * @return True if object was deleted or false otherwise. */ bool dap_chain_global_db_obj_save(void* a_store_data, size_t a_objs_count) { @@ -575,6 +642,13 @@ bool dap_chain_global_db_obj_save(void* a_store_data, size_t a_objs_count) return !l_res; } +/** + * @brief Saves objects in a database by a_group. + * @param a_objs a pointer to objects + * @param a_objs_count a number of objects + * @param a_group a group name string + * @return If successful, true; otherwise false. + */ bool dap_chain_global_db_gr_save(dap_global_db_obj_t* a_objs, size_t a_objs_count, const char *a_group) { dap_store_obj_t *l_store_data = DAP_NEW_Z_SIZE(dap_store_obj_t, a_objs_count * sizeof(struct dap_store_obj)); @@ -604,15 +678,22 @@ bool dap_chain_global_db_gr_save(dap_global_db_obj_t* a_objs, size_t a_objs_coun return false; } +/** + * @brief Saves objectss in a database. + * @param a_objs a pointer to objects + * @param a_objs_count a number of objects + * @return If successful, true; otherwise false. + */ bool dap_chain_global_db_save(dap_global_db_obj_t* a_objs, size_t a_objs_count) { return dap_chain_global_db_gr_save(a_objs, a_objs_count, GROUP_LOCAL_GENERAL); } /** - * Calc hash for data - * - * return hash or NULL + * @brief Calcs a hash string for data + * @param data a pointer to data + * @param data_size a size of data + * @return A hash string or NULL. */ char* dap_chain_global_db_hash(const uint8_t *data, size_t data_size) { diff --git a/modules/global-db/dap_chain_global_db_driver.c b/modules/global-db/dap_chain_global_db_driver.c index 2acb41cae4165cec4c4ee10d9d8153ff2c6edf48..998d4c1706b32a04a3e13e09cc44a2217060f110 100644 --- a/modules/global-db/dap_chain_global_db_driver.c +++ b/modules/global-db/dap_chain_global_db_driver.c @@ -72,10 +72,12 @@ static void* func_write_buf(void * arg); static dap_db_driver_callbacks_t s_drv_callback; /** - * Select driver - * driver_name may be "ldb", "sqlite" - * - * return 0 OK, <0 Error + * @brief Initializes a database driver. + * @note You should Call this function before using the driver. + * @param driver_name a string determining a type of database driver: + * "Ñdb", "sqlite" ("sqlite3") or "pgsql" + * @param a_filename_db a path to a database file + * @return Returns 0, if successful; otherwise <0. */ int dap_db_driver_init(const char *a_driver_name, const char *a_filename_db) { @@ -127,9 +129,10 @@ int dap_db_driver_init(const char *a_driver_name, const char *a_filename_db) } /** - * Shutting down the db library + * @brief Deinitializes a database driver. + * @note You should call this function after using the driver. + * @return (none) */ - void dap_db_driver_deinit(void) { #ifdef USE_WRITE_BUFFER @@ -168,11 +171,21 @@ void dap_db_driver_deinit(void) } } +/** + * @brief Flushes a database cahce to disk. + * @return Returns 0, if successful; otherwise <0. + */ int dap_db_driver_flush(void) { return s_drv_callback.flush(); } +/** + * @brief Copies objects from a_store_obj. + * @param a_store_obj a pointer to the source objects + * @param a_store_count a number of objects + * @return A pointer to the copied objects. + */ dap_store_obj_t* dap_store_obj_copy(dap_store_obj_t *a_store_obj, size_t a_store_count) { if(!a_store_obj || !a_store_count) @@ -190,6 +203,12 @@ dap_store_obj_t* dap_store_obj_copy(dap_store_obj_t *a_store_obj, size_t a_store return l_store_obj; } +/** + * @brief Deallocates memory of objects. + * @param a_store_obj a pointer to objects + * @param a_store_count a number of objects + * @return (none) + */ void dap_store_obj_free(dap_store_obj_t *a_store_obj, size_t a_store_count) { if(!a_store_obj) @@ -204,9 +223,10 @@ void dap_store_obj_free(dap_store_obj_t *a_store_obj, size_t a_store_count) } /** - * Calc hash for data - * - * return hash or NULL + * @brief Calculates a hash of data. + * @param data a pointer to data + * @param data_size a size of data + * @return Returns a hash string if successful; otherwise NULL. */ char* dap_chain_global_db_driver_hash(const uint8_t *data, size_t data_size) { @@ -226,8 +246,11 @@ char* dap_chain_global_db_driver_hash(const uint8_t *data, size_t data_size) } /** - * Wait data to write buffer - * return 0 - Ok, 1 - timeout + * @brief Waits for a buffer to be written. + * @param a_mutex a mutex + * @param a_cond a condition + * @param l_timeout_ms timeout in ms, if -1 endless waiting + * @return Returns 0 if successful or 1 when the timeout is due. */ static int wait_data(pthread_mutex_t *a_mutex, pthread_cond_t *a_cond, int l_timeout_ms) { @@ -257,7 +280,10 @@ static int wait_data(pthread_mutex_t *a_mutex, pthread_cond_t *a_cond, int l_tim } #ifdef USE_WRITE_BUFFER -// return 0 if buffer empty, 1 data present +/** + * @brief Checks if a buffer is not empty. + * @return Returns true if the buffer is not empty, false if it is empty. + */ static bool check_fill_buf(void) { dap_list_t *l_list_begin; @@ -275,7 +301,10 @@ static bool check_fill_buf(void) return l_ret; } -// wait apply write buffer +/** + * @brief Waits until the buffer is not empty. + * @return (none) + */ static void wait_write_buf() { // printf("** Start wait data\n"); @@ -289,7 +318,10 @@ static void wait_write_buf() // printf("** End wait data\n"); } -// save data from buffer to database +/** + * @brief Saves data from a buffer to a database. + * @return 0 + */ static int save_write_buf(void) { dap_list_t *l_list_end; @@ -348,7 +380,11 @@ static int save_write_buf(void) return 0; } -// thread for save data from buffer to database +/** + * @brief A thread for saving data from buffer to a database + * @param arg NULL, is not used + * @return NULL + */ static void* func_write_buf(void * arg) { while(1) { @@ -366,6 +402,12 @@ static void* func_write_buf(void * arg) } #endif //USE_WRITE_BUFFER +/** + * @brief Applies objects to database. + * @param a_store an pointer to the objects + * @param a_store_count a number of objectss + * @return Returns 0, if successful. + */ int dap_chain_global_db_driver_appy(pdap_store_obj_t a_store_obj, size_t a_store_count) { //dap_store_obj_t *l_store_obj = dap_store_obj_copy(a_store_obj, a_store_count); @@ -424,6 +466,12 @@ int dap_chain_global_db_driver_appy(pdap_store_obj_t a_store_obj, size_t a_store } +/** + * @brief Adds objects to a database. + * @param a_store_obj objects to be added + * @param a_store_count a number of added objects + * @return Returns 0 if sucseesful. + */ int dap_chain_global_db_driver_add(pdap_store_obj_t a_store_obj, size_t a_store_count) { for(size_t i = 0; i < a_store_count; i++) @@ -431,6 +479,12 @@ int dap_chain_global_db_driver_add(pdap_store_obj_t a_store_obj, size_t a_store_ return dap_chain_global_db_driver_appy(a_store_obj, a_store_count); } +/** + * @brief Deletes objects from a database. + * @param a_store_obj objects to be deleted + * @param a_store_count a number of deleted objects + * @return Returns 0 if sucseesful. + */ int dap_chain_global_db_driver_delete(pdap_store_obj_t a_store_obj, size_t a_store_count) { for(size_t i = 0; i < a_store_count; i++) @@ -439,10 +493,10 @@ int dap_chain_global_db_driver_delete(pdap_store_obj_t a_store_obj, size_t a_sto } /** - * Read the number of items - * - * a_group - group name - * a_id - from this id + * @brief Gets a number of stored objects in a database by a_group and id. + * @param a_group the group name string + * @param a_id id + * @return Returns a number of objects. */ size_t dap_chain_global_db_driver_count(const char *a_group, uint64_t id) { @@ -454,11 +508,11 @@ size_t dap_chain_global_db_driver_count(const char *a_group, uint64_t id) } /** - * Get group matching the pattern + * @brief Gets a list of group names matching the pattern. * Check whether the groups match the pattern a_group_mask, which is a shell wildcard pattern - * patterns: [] {} [!] * ? - * https://en.wikipedia.org/wiki/Glob_(programming) - * a_group_mask - group mask + * patterns: [] {} [!] * ? https://en.wikipedia.org/wiki/Glob_(programming). + * @param a_group_mask the group mask string + * @return If successful, returns the list of group names, otherwise NULL. */ dap_list_t* dap_chain_global_db_driver_get_groups_by_mask(const char *a_group_mask) { @@ -470,9 +524,9 @@ dap_list_t* dap_chain_global_db_driver_get_groups_by_mask(const char *a_group_ma /** - * Read last items - * - * a_group - group name + * @brief Reads last object in the database. + * @param a_group the group name + * @return If successful, a pointer to the object, otherwise NULL. */ dap_store_obj_t* dap_chain_global_db_driver_read_last(const char *a_group) { @@ -488,13 +542,12 @@ dap_store_obj_t* dap_chain_global_db_driver_read_last(const char *a_group) } /** - * Read several items - * - * a_group - group name - * a_key - key name, may by NULL, it means reading the whole group - * a_id - from this id - * a_count_out[in], how many items to read, 0 - no limits - * a_count_out[out], how many items was read + * @brief Reads several objects from a database by a_group and id. + * @param a_group the group name string + * @param a_id id + * @param a_count_out[in] a number of objects to be read, if 0 - no limits + * @param a_count_out[out] a count of objects that were read + * @return If successful, a pointer to an objects, otherwise NULL. */ dap_store_obj_t* dap_chain_global_db_driver_cond_read(const char *a_group, uint64_t id, size_t *a_count_out) { @@ -510,12 +563,13 @@ dap_store_obj_t* dap_chain_global_db_driver_cond_read(const char *a_group, uint6 } /** - * Read several items - * - * a_group - group name - * a_key - key name, may by NULL, it means reading the whole group - * a_count_out[in], how many items to read, 0 - no limits - * a_count_out[out], how many items was read + * @brief Reads several objects from a database by a_group and a_key. + * If a_key is NULL, reads whole group. + * @param a_group a group name string + * @param a_key an object key string. If equal NULL, it means reading the whole group + * @param a_count_out[in] a number of objects to be read, if 0 - no limits + * @param a_count_out[out] a number of objects that were read + * @return If successful, a pointer to an objects, otherwise NULL. */ dap_store_obj_t* dap_chain_global_db_driver_read(const char *a_group, const char *a_key, size_t *a_count_out) { @@ -531,10 +585,10 @@ dap_store_obj_t* dap_chain_global_db_driver_read(const char *a_group, const char } /** - * Check an element in the database - * - * a_group - group name - * a_key - key name + * @brief Checks if an object is in a database by a_group and a_key. + * @param a_group a group name string + * @param a_key a object key string + * @return Returns true if it is, false otherwise. */ bool dap_chain_global_db_driver_is(const char *a_group, const char *a_key) { diff --git a/modules/global-db/dap_chain_global_db_driver_cdb.c b/modules/global-db/dap_chain_global_db_driver_cdb.c index 1aeba149aaf31a97e43ef8511a2c7ccf1a0c0b20..7d00b153a0879f2e362e0dea9bed116d830b72f1 100644 --- a/modules/global-db/dap_chain_global_db_driver_cdb.c +++ b/modules/global-db/dap_chain_global_db_driver_cdb.c @@ -52,11 +52,26 @@ typedef struct _cdb_instance { UT_hash_handle hh; } cdb_instance, *pcdb_instance; +/** A path to a CDB file. */ static char *s_cdb_path = NULL; +/** A pointer to a CDB instance. */ static pcdb_instance s_cdb = NULL; +/** A mutex for working with a CDB instanse. */ static pthread_mutex_t cdb_mutex = PTHREAD_MUTEX_INITIALIZER; +/** A read-write lock for working with a CDB instanse. */ static pthread_rwlock_t cdb_rwlock = PTHREAD_RWLOCK_INITIALIZER; +/** + * @brief Serialize key and val to a item + * key -> key + * val[0..8] => id + * val[..] => value_len + * val[..] => value + * val[..] => timestamp + * @param a_obj a pointer to a item + * @param key a key + * @param val a serialize string + */ static void cdb_serialize_val_to_dap_store_obj(pdap_store_obj_t a_obj, const char *key, const char *val) { if (!key || !val) { a_obj = NULL; @@ -74,6 +89,7 @@ static void cdb_serialize_val_to_dap_store_obj(pdap_store_obj_t a_obj, const cha a_obj->timestamp = (time_t)dap_hex_to_uint(val + offset, sizeof(time_t)); } +/** A callback function designed for finding a last item */ bool dap_cdb_get_last_obj_iter_callback(void *arg, const char *key, int ksize, const char *val, int vsize, uint32_t expire, uint64_t oid) { UNUSED(ksize); UNUSED(val); @@ -88,6 +104,7 @@ bool dap_cdb_get_last_obj_iter_callback(void *arg, const char *key, int ksize, c return true; } +//** A callback function designed for finding a some items */ bool dap_cdb_get_some_obj_iter_callback(void *arg, const char *key, int ksize, const char *val, int vsize, uint32_t expire, uint64_t oid) { UNUSED(ksize); UNUSED(val); @@ -103,6 +120,7 @@ bool dap_cdb_get_some_obj_iter_callback(void *arg, const char *key, int ksize, c return true; } +//** A callback function designed for finding a some items by conditionals */ bool dap_cdb_get_cond_obj_iter_callback(void *arg, const char *key, int ksize, const char *val, int vsize, uint32_t expire, uint64_t oid) { UNUSED(ksize); UNUSED(val); @@ -120,7 +138,7 @@ bool dap_cdb_get_cond_obj_iter_callback(void *arg, const char *key, int ksize, c } return true; } - +//** A callback function designed for countng items*/ bool dap_cdb_get_count_iter_callback(void *arg, const char *key, int ksize, const char *val, int vsize, uint32_t expire, uint64_t oid) { UNUSED(ksize); UNUSED(val); @@ -138,6 +156,14 @@ bool dap_cdb_get_count_iter_callback(void *arg, const char *key, int ksize, cons return true; } +/** + * @brief Initiates a CDB with main hash table size: 1000000, + * record cache: 128Mb, index page cache: 1024Mb. + * @param a_group a group name + * @param a_flags should be combination of CDB_CREAT / CDB_TRUNC / CDB_PAGEWARMUP + CDB_PAGEWARMUP + * @return A pointer to CDB, if success. NULL, if error. + */ pcdb_instance dap_cdb_init_group(char *a_group, int a_flags) { pcdb_instance l_cdb_i = NULL; pthread_mutex_lock(&cdb_mutex); @@ -198,6 +224,12 @@ ERR: return NULL; } +/** + * @brief Initiates a CDB with callback fuctions. + * @param a_cdb_path a path to CDB. Saved in s_cdb_path + * @param a_drv_callback a struct for callback functions + * @return 0 if success, -1 if Ñouldn't open db directory, -2 if dap_cdb_init_group() returns NULL. + */ int dap_db_driver_cdb_init(const char *a_cdb_path, dap_db_driver_callbacks_t *a_drv_callback) { s_cdb_path = dap_strdup(a_cdb_path); if(s_cdb_path[strlen(s_cdb_path)] == '/') { @@ -251,6 +283,11 @@ int dap_db_driver_cdb_init(const char *a_cdb_path, dap_db_driver_callbacks_t *a_ return CDB_SUCCESS; } +/** + * @brief Gets CDB by a_group. + * @param a_group a group name + * @return if CDB is found, a pointer to CDB, otherwise NULL. + */ pcdb_instance dap_cdb_get_db_by_group(const char *a_group) { pcdb_instance l_cdb_i = NULL; pthread_rwlock_rdlock(&cdb_rwlock); @@ -259,6 +296,11 @@ pcdb_instance dap_cdb_get_db_by_group(const char *a_group) { return l_cdb_i; } +/** + * @brief Creates a directory on the path s_cdb_path/a_group. + * @param a_group the group name + * @return 0 + */ int dap_cdb_add_group(const char *a_group) { char l_cdb_path[strlen(s_cdb_path) + strlen(a_group) + 2]; memset(l_cdb_path, '\0', sizeof(l_cdb_path)); @@ -271,6 +313,10 @@ int dap_cdb_add_group(const char *a_group) { return 0; } +/** + * @brief Deinitialize CDB. + * @return 0 + */ int dap_db_driver_cdb_deinit() { pcdb_instance cur_cdb, tmp; pthread_rwlock_wrlock(&cdb_rwlock); @@ -285,6 +331,10 @@ int dap_db_driver_cdb_deinit() { return CDB_SUCCESS; } +/** + * @brief Flushing CDB to the disk. + * @return 0 + */ int dap_db_driver_cdb_flush(void) { int ret = 0; log_it(L_DEBUG, "Flushing CDB to disk"); @@ -298,6 +348,11 @@ int dap_db_driver_cdb_flush(void) { return ret; } +/** + * @brief Read last store item from CDB. + * @param a_group a group name + * @return If successful, a pointer to item, otherwise NULL. + */ dap_store_obj_t *dap_db_driver_cdb_read_last_store_obj(const char* a_group) { if (!a_group) { return NULL; @@ -319,6 +374,12 @@ dap_store_obj_t *dap_db_driver_cdb_read_last_store_obj(const char* a_group) { return l_arg.o; } +/** + * @brief Checks if CDB has a_key + * @param a_group the group name + * @param a_key the key + * @return true or false + */ bool dap_db_driver_cdb_is_obj(const char *a_group, const char *a_key) { bool l_ret = false; @@ -338,6 +399,13 @@ bool dap_db_driver_cdb_is_obj(const char *a_group, const char *a_key) return l_ret; } +/** + * @brief Gets items from CDB by a_group and a_key. If a_key=NULL then gets a_count_out items. + * @param a_group the group name + * @param a_key the key or NULL + * @param a_count_out IN. Count of read items. OUT Count of items was read + * @return If successful, pointer to items; otherwise NULL. + */ dap_store_obj_t *dap_db_driver_cdb_read_store_obj(const char *a_group, const char *a_key, size_t *a_count_out) { if (!a_group) { return NULL; @@ -390,6 +458,14 @@ dap_store_obj_t *dap_db_driver_cdb_read_store_obj(const char *a_group, const cha return l_obj; } +/** + * @brief Gets items from CDB by a_group and a_id. + * @param a_group the group name + * @param a_id id + * @param a_count_out[in] a count of items + * @param a_count[out] a count of items were got + * @return If successful, pointer to items, otherwise NULL. + */ dap_store_obj_t* dap_db_driver_cdb_read_cond_store_obj(const char *a_group, uint64_t a_id, size_t *a_count_out) { if (!a_group) { return NULL; @@ -436,6 +512,12 @@ dap_store_obj_t* dap_db_driver_cdb_read_cond_store_obj(const char *a_group, uint return l_arg.o; } +/** + * @brief Reads count of items in CDB by a_group and a_id. + * @param a_group the group name + * @param a_id id + * @return If successful, count of store items; otherwise 0. + */ size_t dap_db_driver_cdb_read_count_store(const char *a_group, uint64_t a_id) { if (!a_group) { @@ -458,7 +540,9 @@ size_t dap_db_driver_cdb_read_count_store(const char *a_group, uint64_t a_id) } /** - * Check whether the groups match the pattern a_group_mask, which is a shell wildcard pattern + * @brief Check whether the groups match the pattern a_group_mask, which is a shell wildcard pattern. + * @param a_group_mask the mask + * @return If successful, pointer to dap_list with group names; otherwise NULL. */ dap_list_t* dap_db_driver_cdb_get_groups_by_mask(const char *a_group_mask) { @@ -476,6 +560,11 @@ dap_list_t* dap_db_driver_cdb_get_groups_by_mask(const char *a_group_mask) return l_ret_list; } +/** + * @brief Adds or deletes item in CDB depending on a_store_obj->type. + * @param a_store_obj a pointer to the item + * @return 0 if success, <0 error. + */ int dap_db_driver_cdb_apply_store_obj(pdap_store_obj_t a_store_obj) { if(!a_store_obj || !a_store_obj->group) { return -1; diff --git a/modules/global-db/dap_chain_global_db_remote.c b/modules/global-db/dap_chain_global_db_remote.c index 8954518599b1ecd341d8a9f1822c254f3db3e887..7ba84b9502fe6888d5c8188a69ebee325e572e0d 100644 --- a/modules/global-db/dap_chain_global_db_remote.c +++ b/modules/global-db/dap_chain_global_db_remote.c @@ -14,6 +14,12 @@ // default time of node address expired in hours #define NODE_TIME_EXPIRED_DEFAULT 720 +/** + * @brief Sets current node adress + * @param a_address a current node adress + * @param a_net_name a net name + * @return True if success, otherwise false + */ static bool dap_db_set_cur_node_addr_common(uint64_t a_address, char *a_net_name, time_t a_expire_time) { if(!a_net_name) diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c index 9e72b93607c3783b0b89028d424eb947d43fd712..aaf69b79cf7c9ed54ab2ea1af0c1a540ae47e164 100644 --- a/modules/net/dap_chain_net.c +++ b/modules/net/dap_chain_net.c @@ -964,12 +964,12 @@ dap_chain_node_role_t dap_chain_net_get_role(dap_chain_net_t * a_net) } /** - * @brief dap_chain_net_new - * @param a_id - * @param a_name - * @param a_node_role - * @param a_node_name - * @return + * @brief set node role + * [root_master, root, archive, cell_master, master, full, light] + * @param a_id + * @param a_name + * @param a_node_role + * @return dap_chain_net_t* */ static dap_chain_net_t *s_net_new(const char * a_id, const char * a_name , const char * a_node_role) @@ -1045,7 +1045,9 @@ void dap_chain_net_delete( dap_chain_net_t * a_net ) /** - * @brief dap_chain_net_init + * @brief + * init network settings from cellrame-node.cfg file + * register net* commands in cellframe-node-cli interface * @return */ int dap_chain_net_init() @@ -1089,6 +1091,10 @@ int dap_chain_net_init() return 0; } +/** + * @brief + * load network config settings + */ void dap_chain_net_load_all() { char * l_net_dir_str = dap_strdup_printf("%s/network", dap_config_path()); @@ -1157,9 +1163,10 @@ void s_set_reply_text_node_status(char **a_str_reply, dap_chain_net_t * a_net){ } /** - * @brief s_cli_net - * @param argc - * @param argv + * @brief + * register net* command in cellframe-node-cli interface + * @param argc arguments count + * @param argv arguments value * @param arg_func * @param str_reply * @return @@ -1565,9 +1572,11 @@ static int callback_compare_prioritity_list(const void * a_item1, const void * a } /** - * @brief s_net_load - * @param a_net_name - * @return + * @brief load network config settings from cellframe-node.cfg file + * + * @param a_net_name const char *: network name, for example "home21-network" + * @param a_acl_idx currently 0 + * @return int */ int s_net_load(const char * a_net_name, uint16_t a_acl_idx) { @@ -2499,6 +2508,10 @@ int dap_chain_net_verify_datum_for_add(dap_chain_net_t *a_net, dap_chain_datum_t /** * @brief dap_chain_net_dump_datum + * process datum verification process. Can be: + * if DAP_CHAIN_DATUM_TX, called dap_chain_ledger_tx_add_check + * if DAP_CHAIN_DATUM_TOKEN_DECL, called dap_chain_ledger_token_decl_add_check + * if DAP_CHAIN_DATUM_TOKEN_EMISSION, called dap_chain_ledger_token_emission_add_check * @param a_str_out * @param a_datum */ diff --git a/modules/net/dap_chain_node.c b/modules/net/dap_chain_node.c index 817455ff9e922ce73b65281a17ff5d93668e425a..ed3e1ee5e164c4201d36be9030d48190fe02583b 100644 --- a/modules/net/dap_chain_node.c +++ b/modules/net/dap_chain_node.c @@ -268,6 +268,12 @@ bool dap_chain_node_mempool_process(dap_chain_t *a_chain, dap_chain_node_role_t static bool s_mempool_auto = false; +/** + * @brief + * get automatic mempool processing, when network config contains mempool_auto_types for specific datums + * @return true + * @return false + */ bool dap_chain_node_mempool_autoproc_init() { uint16_t l_net_count; diff --git a/modules/net/dap_chain_node_cli.c b/modules/net/dap_chain_node_cli.c index 5259aa57156ddb46b3d3537a33c5c08fb6bc2942..23484d9697dcbeefd610322898f26918ada4c45a 100644 --- a/modules/net/dap_chain_node_cli.c +++ b/modules/net/dap_chain_node_cli.c @@ -84,15 +84,17 @@ bool s_debug_cli = false; static dap_chain_node_cmd_item_t * s_commands = NULL; - /** + * @brief * Wait for data * timeout - timeout in ms * [Specifying a negative value in timeout means an infinite timeout.] * [Specifying a timeout of zero causes poll() to return immediately, even if no file descriptors are ready.] - * return zero if the time limit expired - * return: >0 if data is present to read - * return: -1 if error + * @param socket + * @param timeout + * @return zero if the time limit expired + * @return: >0 if data is present to read + * @return: -1 if error */ static int s_poll( int socket, int timeout ) { @@ -112,7 +114,11 @@ static int s_poll( int socket, int timeout ) } /** + * @brief is_valid_socket * Check socket for validity + * @param sock + * @return true + * @return false */ static bool is_valid_socket(SOCKET sock) { @@ -145,10 +151,14 @@ static bool is_valid_socket(SOCKET sock) } /** - * Read from socket - * + * @brief s_recv * timeout in milliseconds * return the number of read bytes (-1 err or -2 timeout) + * @param sock + * @param buf + * @param bufsize + * @param timeout + * @return long */ long s_recv(SOCKET sock, unsigned char *buf, size_t bufsize, int timeout) { @@ -173,12 +183,19 @@ long s_recv(SOCKET sock, unsigned char *buf, size_t bufsize, int timeout) } /** + * @brief s_get_next_str * Reading from the socket till arrival the specified string * * stop_str - string to which reading will continue * del_stop_str - удалÑÑ‚ÑŒ ли Ñтроку Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка в конце * timeout - in ms * return: string (if waited for final characters) or NULL, if the string requires deletion + * @param nSocket + * @param dwLen + * @param stop_str + * @param del_stop_str + * @param timeout + * @return char* */ char* s_get_next_str( SOCKET nSocket, int *dwLen, const char *stop_str, bool del_stop_str, int timeout ) { @@ -379,6 +396,16 @@ static void* thread_one_client_func(void *args) #ifdef _WIN32 +/** + * @brief p_get_next_str + * + * @param hPipe + * @param dwLen + * @param stop_str + * @param del_stop_str + * @param timeout + * @return char* + */ char *p_get_next_str( HANDLE hPipe, int *dwLen, const char *stop_str, bool del_stop_str, int timeout ) { bool bSuccess = false; @@ -455,7 +482,10 @@ char *p_get_next_str( HANDLE hPipe, int *dwLen, const char *stop_str, bool del_s /** + * @brief thread_pipe_client_func * threading function for processing a request from a client + * @param args + * @return void* */ static void *thread_pipe_client_func( void *args ) { @@ -603,7 +633,10 @@ static void *thread_pipe_client_func( void *args ) /** + * @brief thread_pipe_func * main threading server function pipe win32 + * @param args + * @return void* */ static void* thread_pipe_func( void *args ) { @@ -651,7 +684,10 @@ static void* thread_pipe_func( void *args ) #endif /** + * @brief thread_main_func * main threading server function + * @param args + * @return void* */ static void* thread_main_func(void *args) { @@ -682,7 +718,11 @@ static void* thread_main_func(void *args) } /** + * @brief dap_chain_node_cli_set_reply_text * Write text to reply string + * @param str_reply + * @param str + * @param ... */ void dap_chain_node_cli_set_reply_text(char **str_reply, const char *str, ...) { @@ -726,9 +766,14 @@ int dap_chain_node_cli_check_option( char** argv, int arg_start, int arg_end, co } /** - * find option value - * + * @brief dap_chain_node_cli_find_option_val * return index of string in argv, or 0 if not found + * @param argv + * @param arg_start + * @param arg_end + * @param opt_name + * @param opt_value + * @return int */ int dap_chain_node_cli_find_option_val( char** argv, int arg_start, int arg_end, const char *opt_name, const char **opt_value) { @@ -784,6 +829,12 @@ void dap_chain_node_cli_cmd_item_create(const char * a_name, cmdfunc_t *a_func, log_it(L_DEBUG,"Added command %s",l_cmd_item->name); } +/** + * @brief dap_chain_node_cli_cmd_item_apply_overrides + * + * @param a_name + * @param a_overrides + */ void dap_chain_node_cli_cmd_item_apply_overrides(const char * a_name, const dap_chain_node_cmd_item_func_overrides_t * a_overrides){ dap_chain_node_cmd_item_t *l_cmd_item = dap_chain_node_cli_cmd_find(a_name); if(l_cmd_item) @@ -813,10 +864,14 @@ dap_chain_node_cmd_item_t* dap_chain_node_cli_cmd_find(const char *a_name) /** + * @brief dap_chain_node_cli_init * Initialization of the server side of the interaction * with the console kelvin-node-cli * + * init commands description * return 0 if OK, -1 error + * @param g_config + * @return int */ int dap_chain_node_cli_init(dap_config_t * g_config) { diff --git a/modules/net/dap_chain_node_cli_cmd.c b/modules/net/dap_chain_node_cli_cmd.c index 36beb9ed111a199e5df42163235175a599a31b91..f73e975f7cff3df62e84eb349914690cf552f3d0 100644 --- a/modules/net/dap_chain_node_cli_cmd.c +++ b/modules/net/dap_chain_node_cli_cmd.c @@ -3,7 +3,7 @@ * Dmitriy A. Gerasimov <gerasimov.dmitriy@demlabs.net> * Alexander Lysikov <alexander.lysikov@demlabs.net> * DeM Labs Inc. https://demlabs.net - * Kelvin Project https://github.com/kelvinblockchain + * Cellframe Network https://github.com/demlabs-cellframe * Copyright (c) 2019 * All rights reserved. @@ -107,9 +107,13 @@ /** + * @brief dap_chain_node_addr_t* dap_chain_node_addr_get_by_alias * Find in base addr by alias * * return addr, NULL if not found + * @param a_net + * @param a_alias + * @return dap_chain_node_addr_t* */ dap_chain_node_addr_t* dap_chain_node_addr_get_by_alias(dap_chain_net_t * a_net, const char *a_alias) { @@ -129,9 +133,13 @@ dap_chain_node_addr_t* dap_chain_node_addr_get_by_alias(dap_chain_net_t * a_net, } /** + * @brief dap_list_t* get_aliases_by_name Get the aliases by name object * Find in base alias by addr * * return list of addr, NULL if not found + * @param l_net + * @param a_addr + * @return dap_list_t* */ static dap_list_t* get_aliases_by_name(dap_chain_net_t * l_net, dap_chain_node_addr_t *a_addr) { @@ -157,6 +165,15 @@ static dap_list_t* get_aliases_by_name(dap_chain_net_t * l_net, dap_chain_node_a return list_aliases; } +/** + * @brief dap_chain_node_addr_t* s_node_info_get_addr + * + * @param a_net + * @param a_node_info + * @param a_addr + * @param a_alias_str + * @return dap_chain_node_addr_t* + */ static dap_chain_node_addr_t* s_node_info_get_addr(dap_chain_net_t * a_net, dap_chain_node_info_t *a_node_info, dap_chain_node_addr_t *a_addr, const char *a_alias_str) { @@ -172,7 +189,12 @@ static dap_chain_node_addr_t* s_node_info_get_addr(dap_chain_net_t * a_net, dap_ } /** + * @brief node_info_read_and_reply * Read node from base + * @param a_net + * @param a_address + * @param a_str_reply + * @return dap_chain_node_info_t* */ static dap_chain_node_info_t* node_info_read_and_reply(dap_chain_net_t * a_net, dap_chain_node_addr_t *a_address, char **a_str_reply) @@ -214,7 +236,19 @@ static dap_chain_node_info_t* node_info_read_and_reply(dap_chain_net_t * a_net, } /** - * Save node to base + * @brief node_info_add_with_reply + * Handler of command 'global_db node add' + * + * str_reply[out] for reply + * return 0 Ok, -1 error + * @param a_net + * @param a_node_info + * @param a_alias_str + * @param a_cell_str + * @param a_ipv4_str + * @param a_ipv6_str + * @param a_str_reply + * @return int */ static bool node_info_save_and_reply(dap_chain_net_t * a_net, dap_chain_node_info_t *a_node_info, char **str_reply) { @@ -246,10 +280,19 @@ static bool node_info_save_and_reply(dap_chain_net_t * a_net, dap_chain_node_inf } /** + * @brief node_info_add_with_reply * Handler of command 'global_db node add' * * str_reply[out] for reply * return 0 Ok, -1 error + * @param a_net + * @param a_node_info + * @param a_alias_str + * @param a_cell_str + * @param a_ipv4_str + * @param a_ipv6_str + * @param a_str_reply + * @return int */ static int node_info_add_with_reply(dap_chain_net_t * a_net, dap_chain_node_info_t *a_node_info, const char *a_alias_str, @@ -297,9 +340,15 @@ static int node_info_add_with_reply(dap_chain_net_t * a_net, dap_chain_node_info } /** + * @brief node_info_del_with_reply * Handler of command 'global_db node add' * * str_reply[out] for reply + * @param a_net + * @param a_node_info + * @param alias_str + * @param str_reply str_reply[out] for reply + * @return int * return 0 Ok, -1 error */ static int node_info_del_with_reply(dap_chain_net_t * a_net, dap_chain_node_info_t *a_node_info, const char *alias_str, @@ -357,11 +406,19 @@ static int node_info_del_with_reply(dap_chain_net_t * a_net, dap_chain_node_info } /** + * @brief link_add_or_del_with_reply * Handler of command 'global_db node link' * * cmd 'add' or 'del' * str_reply[out] for reply * return 0 Ok, -1 error + * @param a_net + * @param a_node_info + * @param cmd + * @param a_alias_str + * @param link + * @param a_str_reply + * @return int */ static int link_add_or_del_with_reply(dap_chain_net_t * a_net, dap_chain_node_info_t *a_node_info, const char *cmd, const char *a_alias_str, @@ -469,9 +526,16 @@ static int link_add_or_del_with_reply(dap_chain_net_t * a_net, dap_chain_node_in /** * Handler of command 'node dump' + * @brief node_info_dump_with_reply Handler of command 'node dump' * * str_reply[out] for reply * return 0 Ok, -1 error + * @param a_net + * @param a_addr + * @param a_is_full + * @param a_alias + * @param a_str_reply + * @return int */ static int node_info_dump_with_reply(dap_chain_net_t * a_net, dap_chain_node_addr_t * a_addr, bool a_is_full, const char *a_alias, char **a_str_reply) @@ -669,11 +733,16 @@ static int node_info_dump_with_reply(dap_chain_net_t * a_net, dap_chain_node_add } /** + * @brief com_global_db * global_db command * + * @param a_argc + * @param a_argv + * @param arg_func + * @param a_str_reply + * @return int * return 0 OK, -1 Err */ - int com_global_db(int a_argc, char ** a_argv, void *arg_func, char **a_str_reply) { enum { @@ -1265,7 +1334,13 @@ int com_node(int a_argc, char ** a_argv, void *arg_func, char **a_str_reply) /** * Traceroute command * + * @brief Traceroute command * return 0 OK, -1 Err + * @param argc + * @param argv + * @param arg_func + * @param str_reply + * @return int */ int com_traceroute(int argc, char** argv, void *arg_func, char **str_reply) { @@ -1344,8 +1419,14 @@ int com_traceroute(int argc, char** argv, void *arg_func, char **str_reply) } /** + * @brief com_tracepath * Tracepath command * + * @param argc + * @param argv + * @param arg_func + * @param str_reply + * @return int * return 0 OK, -1 Err */ int com_tracepath(int argc, char** argv, void *arg_func, char **str_reply) @@ -1422,7 +1503,13 @@ int com_tracepath(int argc, char** argv, void *arg_func, char **str_reply) /** * Ping command * + * @brief Ping command * return 0 OK, -1 Err + * @param argc + * @param argv + * @param arg_func + * @param str_reply + * @return int */ int com_ping(int argc, char** argv, void *arg_func, char **str_reply) { @@ -1509,7 +1596,13 @@ int com_version(int argc, char ** argv, void *arg_func, char **str_reply) /** + * @brief * Help command + * @param argc + * @param argv + * @param arg_func + * @param str_reply + * @return int */ int com_help(int argc, char ** argv, void *arg_func, char **str_reply) { @@ -1544,7 +1637,14 @@ int com_help(int argc, char ** argv, void *arg_func, char **str_reply) /** * com_tx_create command * + * @brief com_tx_wallet * Wallet info + * com_tx_create command + * @param argc + * @param argv + * @param arg_func + * @param str_reply + * @return int */ int com_tx_wallet(int argc, char ** argv, void *arg_func, char **str_reply) { @@ -2048,6 +2148,14 @@ int com_token_decl_sign(int argc, char ** argv, void *arg_func, char ** a_str_re } } +/** + * @brief s_com_mempool_list_print_for_chain + * + * @param a_net + * @param a_chain + * @param a_str_tmp + * @param a_hash_out_type + */ void s_com_mempool_list_print_for_chain(dap_chain_net_t * a_net, dap_chain_t * a_chain, dap_string_t * a_str_tmp, const char *a_hash_out_type){ char * l_gdb_group_mempool = dap_chain_net_get_gdb_group_mempool(a_chain); if(!l_gdb_group_mempool){ @@ -3384,9 +3492,14 @@ int com_token_emit(int a_argc, char ** a_argv, void *a_arg_func, char ** a_str_r } /** - * com_tx_cond_create command - * + * @brief com_tx_cond_create * Create transaction + * com_tx_cond_create command + * @param a_argc + * @param a_argv + * @param a_arg_func + * @param a_str_reply + * @return int */ int com_tx_cond_create(int a_argc, char ** a_argv, void *a_arg_func, char **a_str_reply) { @@ -3659,9 +3772,15 @@ int com_mempool_add_ca( int a_argc, char ** a_argv, void *a_arg_func, char ** a /** + * @brief Create transaction * com_tx_create command * * Create transaction + * @param argc + * @param argv + * @param arg_func + * @param str_reply + * @return int */ int com_tx_create(int argc, char ** argv, void *arg_func, char **str_reply) { @@ -3802,9 +3921,14 @@ int com_tx_create(int argc, char ** argv, void *arg_func, char **str_reply) } /** - * tx_verify command - * + * @brief com_tx_verify * Verifing transaction + * tx_verify command + * @param argc + * @param argv + * @param arg_func + * @param str_reply + * @return int */ int com_tx_verify(int argc, char ** argv, void *arg_func, char **str_reply) { @@ -3818,9 +3942,15 @@ int com_tx_verify(int argc, char ** argv, void *arg_func, char **str_reply) } /** + * @brief com_tx_history * tx_history command * * Transaction history for an address + * @param a_argc + * @param a_argv + * @param a_arg_func + * @param a_str_reply + * @return int */ int com_tx_history(int a_argc, char ** a_argv, void *a_arg_func, char **a_str_reply) { @@ -3935,7 +4065,13 @@ int com_tx_history(int a_argc, char ** a_argv, void *a_arg_func, char **a_str_re } /** - * stats command + * @brief stats command + * + * @param argc + * @param argv + * @param arg_func + * @param str_reply + * @return int */ int com_stats(int argc, char ** argv, void *arg_func, char **str_reply) { @@ -3986,6 +4122,15 @@ int com_stats(int argc, char ** argv, void *arg_func, char **str_reply) return 0; } +/** + * @brief com_exit + * + * @param argc + * @param argv + * @param arg_func + * @param str_reply + * @return int + */ int com_exit(int argc, char ** argv, void *arg_func, char **str_reply) { //dap_events_stop_all(); @@ -3995,10 +4140,13 @@ int com_exit(int argc, char ** argv, void *arg_func, char **str_reply) /** - * print_log command - * - * Print log info + * @brief com_print_log Print log info * print_log [ts_after <timestamp >] [limit <line numbers>] + * @param argc + * @param argv + * @param arg_func + * @param str_reply + * @return int */ int com_print_log(int argc, char ** argv, void *arg_func, char **str_reply) { diff --git a/modules/net/dap_chain_node_cli_cmd_tx.c b/modules/net/dap_chain_node_cli_cmd_tx.c index 1633f6fe57133dfadad059bc3d79afd15afa21ac..94896a07a5dc6f7ee8eeb3c80ade13e35fc4d48e 100644 --- a/modules/net/dap_chain_node_cli_cmd_tx.c +++ b/modules/net/dap_chain_node_cli_cmd_tx.c @@ -60,6 +60,12 @@ typedef struct dap_chain_tx_hash_processed_ht{ dap_chain_hash_fast_t hash; UT_hash_handle hh; }dap_chain_tx_hash_processed_ht_t; + +/** + * @brief _dap_chain_tx_hash_processed_ht_free + * free l_current_hash->hash, l_current_hash, l_hash_processed + * @param l_hash_processed dap_chain_tx_hash_processed_ht_t + */ void _dap_chain_tx_hash_processed_ht_free(dap_chain_tx_hash_processed_ht_t *l_hash_processed){ dap_chain_tx_hash_processed_ht_t *l_tmp; dap_chain_tx_hash_processed_ht_t *l_current_hash; @@ -70,6 +76,17 @@ void _dap_chain_tx_hash_processed_ht_free(dap_chain_tx_hash_processed_ht_t *l_ha DAP_FREE(l_hash_processed); } +/** + * @brief _dap_chain_datum_tx_out_data + * + * @param a_datum + * @param a_ledger + * @param a_str_out + * @param a_hash_out_type + * @param save_processed_tx + * @param a_tx_hash_processed + * @param l_tx_num + */ void _dap_chain_datum_tx_out_data(dap_chain_datum_tx_t *a_datum, dap_ledger_t *a_ledger, dap_string_t *a_str_out, @@ -349,9 +366,14 @@ static dap_chain_datum_t* get_prev_tx(dap_tx_data_t *a_tx_data) } /** + * @brief dap_db_history_tx * Get data according the history log * * return history string + * @param a_tx_hash + * @param a_chain + * @param a_hash_out_type + * @return char* */ char* dap_db_history_tx(dap_chain_hash_fast_t* a_tx_hash, dap_chain_t * a_chain, const char *a_hash_out_type) { @@ -566,9 +588,14 @@ char* dap_db_history_tx(dap_chain_hash_fast_t* a_tx_hash, dap_chain_t * a_chain, } /** + * @brief dap_db_history_addr * Get data according the history log * * return history string + * @param a_addr + * @param a_chain + * @param a_hash_out_type + * @return char* */ char* dap_db_history_addr(dap_chain_addr_t * a_addr, dap_chain_t * a_chain, const char *a_hash_out_type) { @@ -952,6 +979,15 @@ char* dap_db_history_addr(dap_chain_addr_t * a_addr, dap_chain_t * a_chain, cons return l_ret_str; } +/** + * @brief char* dap_db_history_token_list + * + * @param a_chain + * @param a_token_name + * @param a_hash_out_type + * @param a_token_num + * @return char* + */ static char* dap_db_history_token_list(dap_chain_t * a_chain, const char *a_token_name, const char *a_hash_out_type, size_t *a_token_num) { dap_string_t *l_str_out = dap_string_new(NULL); @@ -1056,9 +1092,20 @@ static char* dap_db_history_token_list(dap_chain_t * a_chain, const char *a_toke } /** + * @brief dap_db_history_filter * Get data according the history log * * return history string + * @param a_chain + * @param a_ledger + * @param a_filter_token_name + * @param a_filtr_addr_base58 + * @param a_hash_out_type + * @param a_datum_start + * @param a_datum_end + * @param a_total_datums + * @param a_tx_hash_processed + * @return char* */ static char* dap_db_history_filter(dap_chain_t * a_chain, dap_ledger_t *a_ledger, const char *a_filter_token_name, const char *a_filtr_addr_base58, const char *a_hash_out_type, long a_datum_start, long a_datum_end, long *a_total_datums, dap_chain_tx_hash_processed_ht_t *a_tx_hash_processed) { @@ -1517,11 +1564,15 @@ static char* dap_db_history_filter(dap_chain_t * a_chain, dap_ledger_t *a_ledger } - - /** + * @brief com_ledger * ledger command * + * @param a_argc + * @param a_argv + * @param a_arg_func + * @param a_str_reply + * @return int */ int com_ledger(int a_argc, char ** a_argv, void *a_arg_func, char **a_str_reply) { @@ -1745,8 +1796,14 @@ int com_ledger(int a_argc, char ** a_argv, void *a_arg_func, char **a_str_reply) } /** + * @brief com_token * token command * + * @param a_argc + * @param a_argv + * @param a_arg_func + * @param a_str_reply + * @return int */ int com_token(int a_argc, char ** a_argv, void *a_arg_func, char **a_str_reply) { diff --git a/modules/net/dap_chain_node_client.c b/modules/net/dap_chain_node_client.c index d7dba4dc714af081603d2becfd615b06c7e04161..f2c4384bca13b5f35417a18ac5ad45c9a5eb253b 100644 --- a/modules/net/dap_chain_node_client.c +++ b/modules/net/dap_chain_node_client.c @@ -178,6 +178,12 @@ static void s_stage_status_error_callback(dap_client_t *a_client, void *a_arg) l_node_client->callbacks.error(l_node_client, EINVAL,l_node_client->callbacks_arg ); } +/** + * @brief s_node_client_connected_synchro_start_callback + * + * @param a_worker dap_worker_t + * @param a_arg void + */ static void s_node_client_connected_synchro_start_callback(dap_worker_t *a_worker, void *a_arg) { UNUSED(a_worker); @@ -492,6 +498,13 @@ static void s_ch_chain_callback_notify_packet_out(dap_stream_ch_chain_t* a_ch_ch //} } +/** + * @brief save_stat_to_database + * + * @param a_request + * @param a_node_client + * @return int + */ static int save_stat_to_database(dap_stream_ch_chain_net_srv_pkt_test_t *a_request, dap_chain_node_client_t * a_node_client) { int l_ret = 0; @@ -571,11 +584,15 @@ static void s_ch_chain_callback_notify_packet_R(dap_stream_ch_chain_net_srv_t* a } /** + * @brief dap_chain_node_client_connect_channels * Create connection to server * * return a connection handle, or NULL, if an error + * @param l_net + * @param a_node_info + * @param a_active_channels + * @return dap_chain_node_client_t* return a connection handle, or NULL, if an error */ - dap_chain_node_client_t* dap_chain_node_client_connect_channels(dap_chain_net_t * l_net, dap_chain_node_info_t *a_node_info, const char *a_active_channels) { return dap_chain_net_client_create_n_connect_channels(l_net,a_node_info,a_active_channels); @@ -630,7 +647,14 @@ dap_chain_node_client_t* dap_chain_node_client_create_n_connect(dap_chain_net_t return NULL; } -// Create new dap_client, setup it, and send it in adventure trip +/** + * @brief dap_chain_node_client_connect_internal + * Create new dap_client, setup it, and send it in adventure trip + * @param a_node_client dap_chain_node_client_t + * @param a_active_channels a_active_channels + * @return true + * @return false + */ static bool dap_chain_node_client_connect_internal(dap_chain_node_client_t *a_node_client, const char *a_active_channels) { a_node_client->client = dap_client_new(a_node_client->events, s_stage_status_callback, @@ -668,9 +692,13 @@ static bool dap_chain_node_client_connect_internal(dap_chain_node_client_t *a_no } /** + * @brief dap_chain_node_client_connect * Create connection to server * * return a connection handle, or NULL, if an error + * @param a_net + * @param a_node_info + * @return dap_chain_node_client_t* return a connection handle, or NULL, if an error */ dap_chain_node_client_t* dap_chain_node_client_connect(dap_chain_net_t * a_net,dap_chain_node_info_t *a_node_info) { @@ -678,7 +706,11 @@ dap_chain_node_client_t* dap_chain_node_client_connect(dap_chain_net_t * a_net,d return dap_chain_node_client_connect_channels(a_net,a_node_info, l_active_channels); } - +/** + * @brief dap_chain_node_client_reset + * + * @param a_client dap_chain_node_client_t + */ void dap_chain_node_client_reset(dap_chain_node_client_t *a_client) { if (a_client->state > NODE_CLIENT_STATE_ESTABLISHED) { @@ -687,7 +719,9 @@ void dap_chain_node_client_reset(dap_chain_node_client_t *a_client) } /** + * @brief dap_chain_node_client_close * Close connection to server, delete chain_node_client_t *client + * @param a_client dap_chain_node_client_t */ void dap_chain_node_client_close(dap_chain_node_client_t *a_client) { @@ -721,7 +755,14 @@ void dap_chain_node_client_close(dap_chain_node_client_t *a_client) } /** + * @brief dap_chain_node_client_send_ch_pkt * Send stream request to server + * @param a_client + * @param a_ch_id + * @param a_type + * @param a_pkt_data + * @param a_pkt_data_size + * @return int */ int dap_chain_node_client_send_ch_pkt(dap_chain_node_client_t *a_client, uint8_t a_ch_id, uint8_t a_type, const void *a_pkt_data, size_t a_pkt_data_size) @@ -735,11 +776,16 @@ int dap_chain_node_client_send_ch_pkt(dap_chain_node_client_t *a_client, uint8_t } /** + * @brief dap_chain_node_client_wait * wait for the complete of request * * timeout_ms timeout in milliseconds * waited_state state which we will wait, sample NODE_CLIENT_STATE_CONNECT or NODE_CLIENT_STATE_SENDED * return -2 false, -1 timeout, 0 end of connection or sending data + * @param a_client + * @param a_waited_state + * @param a_timeout_ms + * @return int return -2 false, -1 timeout, 0 end of connection or sending data */ int dap_chain_node_client_wait(dap_chain_node_client_t *a_client, int a_waited_state, int a_timeout_ms) { @@ -815,6 +861,13 @@ int dap_chain_node_client_wait(dap_chain_node_client_t *a_client, int a_waited_s return ret; } +/** + * @brief dap_chain_node_client_set_callbacks + * + * @param a_client dap_client_t + * @param a_ch_id uint8_t + * @return int + */ int dap_chain_node_client_set_callbacks(dap_client_t *a_client, uint8_t a_ch_id) { int l_ret = -1; @@ -867,7 +920,10 @@ static void nodelist_response_error_callback(dap_client_t *a_client, int a_err) }*/ /** + * @brief dap_chain_node_client_send_nodelist_req * Send nodelist request to server + * @param a_client + * @return int */ int dap_chain_node_client_send_nodelist_req(dap_chain_node_client_t *a_client) {