From e8b128800274dba9b4a5fe7244ae02fd24eeeff7 Mon Sep 17 00:00:00 2001 From: "Dmitriy A. Gerasimov" <dmitriy.gerasimov@demlabs.net> Date: Tue, 5 Nov 2019 18:49:07 +0700 Subject: [PATCH] [*] Fixed orders dump --- dap_chain_net_srv.c | 16 ++++++++-------- dap_chain_net_srv_common.h | 4 +++- dap_chain_net_srv_order.c | 14 +++++++------- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/dap_chain_net_srv.c b/dap_chain_net_srv.c index eb398ff..843b909 100755 --- a/dap_chain_net_srv.c +++ b/dap_chain_net_srv.c @@ -91,7 +91,7 @@ int dap_chain_net_srv_init(void) "net_srv -net <chain net name> order dump -hash <Order hash>\n" "\tOrder dump info\n" "net_srv -net <chain net name> order create -direction <sell|buy> -srv_uid <Service UID> -srv_class <Service Class> -price <Price>\\\n" - " -price_unit <Price Unit> -price_ticker <Token ticker> -node_addr <Node Address> -tx_cond <TX Cond Hash> \\\n" + " -price_unit <Price Unit> -price_token <Token ticker> -node_addr <Node Address> -tx_cond <TX Cond Hash> \\\n" " [-expires <Unix time when expires>]\\\n" "\tOrder create\n" ); @@ -224,11 +224,9 @@ static int s_cli_net_srv( int argc, char **argv, char **a_str_reply) uint64_t l_price_min=0, l_price_max =0 ; dap_chain_net_srv_price_unit_uid_t l_price_unit={{0}}; dap_chain_net_srv_order_direction_t l_direction = SERV_DIR_UNDEFINED; - char l_price_token[DAP_CHAIN_TICKER_SIZE_MAX]={0}; - - if( dap_chain_net_srv_order_find_all_by( l_net,l_direction,l_srv_uid,l_srv_class,l_price_unit, l_price_token, l_price_min, l_price_max,&l_orders,&l_orders_size) == 0 ){ - dap_string_append_printf(l_string_ret,"Found %u orders:\n",l_orders_size); + if( dap_chain_net_srv_order_find_all_by( l_net,l_direction,l_srv_uid,l_srv_class,l_price_unit, NULL, l_price_min, l_price_max,&l_orders,&l_orders_size) == 0 ){ + dap_string_append_printf(l_string_ret,"Found %zd orders:\n",l_orders_size); for (size_t i = 0; i< l_orders_size; i++){ dap_chain_net_srv_order_dump_to_string(l_orders+i,l_string_ret); dap_string_append(l_string_ret,"\n"); @@ -287,7 +285,7 @@ static int s_cli_net_srv( int argc, char **argv, char **a_str_reply) const char* l_comments = NULL; dap_chain_node_cli_find_option_val(argv, arg_index, argc, "-comments", &l_comments); - if ( l_srv_uid_str && l_srv_class_str && l_node_addr_str && l_tx_cond_hash_str && l_price_str ) { + if ( l_srv_uid_str && l_srv_class_str && l_price_str && l_price_token_str && l_price_unit_str) { dap_chain_net_srv_uid_t l_srv_uid={{0}}; dap_chain_net_srv_class_t l_srv_class= SERV_CLASS_UNDEFINED; dap_chain_node_addr_t l_node_addr={0}; @@ -309,8 +307,10 @@ static int s_cli_net_srv( int argc, char **argv, char **a_str_reply) l_expires = (dap_chain_time_t ) atoll( l_expires_str); l_srv_uid.uint64 = (uint64_t) atoll( l_srv_uid_str); l_srv_class = (dap_chain_net_srv_class_t) atoi( l_srv_class_str ); - dap_chain_node_addr_from_str( &l_node_addr, l_node_addr_str ); - dap_chain_str_to_hash_fast (l_tx_cond_hash_str, &l_tx_cond_hash); + if (l_node_addr_str) + dap_chain_node_addr_from_str( &l_node_addr, l_node_addr_str ); + if (l_tx_cond_hash_str) + dap_chain_str_to_hash_fast (l_tx_cond_hash_str, &l_tx_cond_hash); l_price = (uint64_t) atoll ( l_price_str ); l_price_unit.uint32 = (uint32_t) atol ( l_price_unit_str ); diff --git a/dap_chain_net_srv_common.h b/dap_chain_net_srv_common.h index f8cf389..b680a5f 100755 --- a/dap_chain_net_srv_common.h +++ b/dap_chain_net_srv_common.h @@ -44,6 +44,7 @@ typedef union { #endif } dap_chain_net_srv_uid_t; +#define DAP_CHAIN_NET_SRV_PRICE_UNIT_UNDEFINED 0x00000000 #define DAP_CHAIN_NET_SRV_PRICE_UNIT_BYTE 0x00000001 #define DAP_CHAIN_NET_SRV_PRICE_UNIT_SECOND 0x00000010 #define DAP_CHAIN_NET_SRV_PRICE_UNIT_BYTE_PER_SECOND 0x00000100 @@ -70,7 +71,8 @@ typedef enum dap_chain_net_srv_order_direction{ //Types of services enum { - SERV_ID_VPN = 1, + SERV_ID_UNDEFINED = 0x00000000, + SERV_ID_VPN = 0x00000001, }; //Units of service diff --git a/dap_chain_net_srv_order.c b/dap_chain_net_srv_order.c index 872a173..3eabd47 100644 --- a/dap_chain_net_srv_order.c +++ b/dap_chain_net_srv_order.c @@ -88,7 +88,6 @@ char* dap_chain_net_srv_order_create( return NULL; } DAP_DELETE( l_order_hash ); - DAP_DELETE( l_order_hash_str ); DAP_DELETE( l_order ); DAP_DELETE( l_gdb_group_str ); return l_order_hash_str; @@ -142,7 +141,7 @@ int dap_chain_net_srv_order_find_all_by(dap_chain_net_t * a_net,const dap_chain_ char * l_gdb_group_str = dap_chain_net_srv_order_get_gdb_group( a_net); size_t l_orders_count = 0; dap_global_db_obj_t * l_orders = dap_chain_global_db_gr_load(l_gdb_group_str,&l_orders_count); - + log_it( L_DEBUG ,"Loaded %zd orders", l_orders_count); bool l_order_pass_first=true; size_t l_order_passed_index; lb_order_pass: @@ -151,10 +150,11 @@ lb_order_pass: dap_chain_net_srv_order_t * l_order = (dap_chain_net_srv_order_t *) l_orders[i].value; // Check direction if (a_direction != SERV_DIR_UNDEFINED ) - if ( l_order->direction == a_direction ) + if ( l_order->direction != a_direction ) continue; + // Check srv uid - if ( a_srv_uid.uint64) + if ( a_srv_uid.uint64 ) if ( l_order->srv_uid.uint64 != a_srv_uid.uint64 ) continue; // Check srv class @@ -175,12 +175,12 @@ lb_order_pass: continue; // Check ticker if ( a_price_ticker ) - if ( strcmp( l_order->price_ticker, a_price_ticker) == 0 ) + if ( strcmp( l_order->price_ticker, a_price_ticker) != 0 ) continue; if( !l_order_pass_first ){ memcpy(a_output_orders[l_order_passed_index], l_order, sizeof (dap_chain_net_srv_order_t)); - } - l_order_passed_index++; + }else + l_order_passed_index++; } // Dirty goto usage ho ho ho if (l_order_pass_first) { -- GitLab