diff --git a/modules/service/xchange/dap_chain_net_srv_xchange.c b/modules/service/xchange/dap_chain_net_srv_xchange.c index e1a549718545a8bfb56a3f51e79d956909143669..0564972caa758eef27182b2290cfcc613b3872b9 100644 --- a/modules/service/xchange/dap_chain_net_srv_xchange.c +++ b/modules/service/xchange/dap_chain_net_srv_xchange.c @@ -117,9 +117,9 @@ int dap_chain_net_srv_xchange_init() "srv_xchange token_pair -net <net_name> list all\n" "\tList of all token pairs\n" - "srv_xchange token_pair -net <net_name> price average -token_from <token_ticker> -token_to <token_ticker>\n" + "srv_xchange token_pair -net <net_name> rate average -token_from <token_ticker> -token_to <token_ticker>\n" "\tGet average rate for token pair <token from>:<token to> from <From time> to <To time> \n" - "srv_xchange token_pair -net <net_name> price history -token_from <token_ticker> -token_to <token_ticker> [-time_from <From time>] [-time_to <To time>] \n" + "srv_xchange token_pair -net <net_name> rate history -token_from <token_ticker> -token_to <token_ticker> [-time_from <From_time>] [-time_to <To_time>] \n" "\tPrint rate history for token pair <token from>:<token to> from <From time> to <To time>\n" "\tAll times are in RFC822. For example: \"Thu, 7 Dec 2023 21:18:04\"\n" @@ -1824,6 +1824,7 @@ static int s_cli_srv_xchange(int a_argc, char **a_argv, void **a_str_reply) } } + uint64_t l_printed_orders_count = 0; // Print all txs for (dap_list_t *it = l_tx_list; it; it = it->next) { dap_chain_datum_tx_t *l_tx = (dap_chain_datum_tx_t *)it->data; @@ -1918,7 +1919,7 @@ static int s_cli_srv_xchange(int a_argc, char **a_argv, void **a_str_reply) l_price->token_buy, l_price->token_sell, l_cp_rate = dap_chain_balance_to_coins(l_price->rate), l_price->net->pub.name); - + l_printed_orders_count++; DAP_DEL_Z(l_tx_hash_str); DAP_DEL_Z(l_amount_coins_str); DAP_DEL_Z(l_amount_datoshi_str); @@ -2121,7 +2122,7 @@ static int s_cli_srv_xchange(int a_argc, char **a_argv, void **a_str_reply) // check for price subcommand const char * l_price_subcommand = NULL; - dap_cli_server_cmd_find_option_val(a_argv, l_arg_index, a_argc, "price", &l_price_subcommand); + dap_cli_server_cmd_find_option_val(a_argv, l_arg_index, a_argc, "rate", &l_price_subcommand); if ( l_price_subcommand ){ // Check for token_from const char * l_token_from_str = NULL; @@ -2171,6 +2172,7 @@ static int s_cli_srv_xchange(int a_argc, char **a_argv, void **a_str_reply) uint256_t l_total_rates = {0}; uint256_t l_total_rates_count = {0}; uint256_t l_rate = {}; + dap_time_t l_last_rate_time = 0; while(l_cur){ dap_chain_datum_tx_t * l_tx =(dap_chain_datum_tx_t *) l_cur->data; if(l_tx){ @@ -2205,6 +2207,7 @@ static int s_cli_srv_xchange(int a_argc, char **a_argv, void **a_str_reply) uint256_t l_value_sell = l_out_cond_item->header.value; l_rate = l_out_cond_item->subtype.srv_xchange.rate; + l_last_rate_time = l_tx->header.ts_created; if (!IS_ZERO_256(l_value_sell)) { if(SUM_256_256(l_rate, l_total_rates, &l_total_rates )!= 0) log_it(L_ERROR, "Overflow on average price calculation (summing)"); @@ -2222,7 +2225,10 @@ static int s_cli_srv_xchange(int a_argc, char **a_argv, void **a_str_reply) char *l_rate_average_str = dap_chain_balance_to_coins(l_rate_average); char *l_last_rate_str = dap_chain_balance_to_coins(l_rate); - dap_string_append_printf(l_reply_str,"Average price: %s Last price: %s", l_rate_average_str, l_last_rate_str); + char l_tmp_buf[70] = {}; + dap_ctime_r(&l_last_rate_time, l_tmp_buf); + l_tmp_buf[strlen(l_tmp_buf) - 1] = '\0'; + dap_string_append_printf(l_reply_str,"Average rate: %s \n\rLast rate: %s Last rate time: %s (%"DAP_UINT64_FORMAT_U")", l_rate_average_str, l_last_rate_str, l_tmp_buf, l_last_rate_time); DAP_DELETE(l_rate_average_str); DAP_DELETE(l_last_rate_str); *a_str_reply = dap_string_free(l_reply_str, false);