diff --git a/Platform/user/configm/config-server/configserver.c b/Platform/user/configm/config-server/configserver.c index 7f61fa601..ac1b14ed0 100644 --- a/Platform/user/configm/config-server/configserver.c +++ b/Platform/user/configm/config-server/configserver.c @@ -9,40 +9,73 @@ #include "rpc.h" #include "configm.h" - config_service_t g_config_service[] = CONFIG_SERVICE_ARRAY; config_init_t g_config_init[] = CONFIG_INIT_ARRAY; -void test_big_data(rpc_conn *conn, pointer input, int input_len, void* data) { - char buf[input_len]; - memcpy(buf, input, input_len); - buf[input_len] = '\0'; - printf("get data is %s\n", buf); - //sleep(15); - rpc_return_null(conn); +int cm_format_data(ret_code ret_code, cJSON *item_obj, char *output) +{ + int str_len = 0; + char *ret_char = NULL; + config_result_t tem_buff = {0}; + config_result_t *config_ret = &tem_buff; + + + snprintf(config_ret->resultCode, RET_CODE_LEN - 1, "%d", ret_code); + config_ret->message = (char *)rpc_code_format(ret_code); + + s2j_create_json_obj(json_obj); + if(json_obj == NULL) + { + return 0; + } + + s2j_json_set_basic_element(json_obj, config_ret, string, resultCode); + s2j_json_set_basic_element(json_obj, config_ret, string, message); + + cJSON_AddItemToObject(json_obj, "data", item_obj); + + ret_char = cJSON_PrintUnformatted(json_obj); + str_len = strlen(ret_char); + + strncpy(output, ret_char, CM_BUFF_SIZE - 1); + + rpc_free(ret_char); + cJSON_Delete(json_obj); + + return (str_len + 1); } + void cm_return(rpc_conn *conn, ret_code err_code, char* err_message) { - cJSON *res; char *ret_char = NULL; + char *null_str = ""; + config_result_t tem_buff = {0}; + config_result_t *config_ret = &tem_buff; rpc_log_dbg("error %d:%s\n", err_code, err_message); - - res = cJSON_CreateObject(); - if(res == NULL) + + snprintf(config_ret->resultCode, RET_CODE_LEN - 1, "%d", err_code); + config_ret->message = (char *)rpc_code_format(err_code); + config_ret->data = null_str; + + s2j_create_json_obj(json_obj); + if(json_obj == NULL) { return; } - - cJSON_AddNumberToObject(res, "error", err_code); - ret_char = cJSON_PrintUnformatted(res); - - cJSON_Delete(res); + + s2j_json_set_basic_element(json_obj, config_ret, string, resultCode); + s2j_json_set_basic_element(json_obj, config_ret, string, message); + s2j_json_set_basic_element(json_obj, config_ret, string, data); + + ret_char = cJSON_PrintUnformatted(json_obj); rpc_return(conn, ret_char, strlen(ret_char)+1); + rpc_free(ret_char); - + cJSON_Delete(json_obj); + return; } diff --git a/Platform/user/configm/config-server/include/configm.h b/Platform/user/configm/config-server/include/configm.h index 3662e0878..f46fa35e8 100755 --- a/Platform/user/configm/config-server/include/configm.h +++ b/Platform/user/configm/config-server/include/configm.h @@ -13,7 +13,8 @@ #include "../web_config/auth_parameters.h" #include "natconfig.h" - +#define RET_CODE_LEN 16 +#define RET_MSG_LEN 128 #define CONFIG_INIT_ARRAY \ {\ @@ -224,5 +225,15 @@ struct _config_service { typedef struct _config_service config_service_t; +struct _config_result { + char resultCode[RET_CODE_LEN]; + char *message; + char *data; +}; + +typedef struct _config_result config_result_t; + +int cm_format_data(ret_code ret_code, cJSON *json_obj, char *output); + #endif /* RPC_COMMON_H_ */ diff --git a/Platform/user/configm/config-server/netconfig/ipconfig/ipconfig.c b/Platform/user/configm/config-server/netconfig/ipconfig/ipconfig.c index 8132b8a85..83d2bcd70 100644 --- a/Platform/user/configm/config-server/netconfig/ipconfig/ipconfig.c +++ b/Platform/user/configm/config-server/netconfig/ipconfig/ipconfig.c @@ -83,9 +83,9 @@ ret_code ip_config_json_parse(pointer input, uint *conf_type, ip_config_t *confi } s2j_struct_get_basic_element(ip_config, json_obj, int, config_type); - S2J_STRUCT_GET_STRING_ELEMENT_N(ip_config, json_obj, ifname, INTERFACE_NAMSIZ); + s2j_struct_get_string_element(ip_config, json_obj, ifname, INTERFACE_NAMSIZ); s2j_struct_get_basic_element(ip_config, json_obj, int, family); - S2J_STRUCT_GET_STRING_ELEMENT_N(ip_config, json_obj, ipaddr, DOT_IP_STR); + s2j_struct_get_string_element(ip_config, json_obj, ipaddr, DOT_IP_STR); s2j_struct_get_basic_element(ip_config, json_obj, int, prefixlen); strncpy(config_buff->ifname, ip_config->ifname, INTERFACE_NAMSIZ - 1); @@ -121,7 +121,7 @@ ret_code ip_config_json_parse_array(pointer input, uint *conf_type, rpc_log_info("json input:%s \n", cJSON_Print(json_obj)); - iCount = cJSON_GetArraySize(json_obj); /*获取数组长度*/ + iCount = cJSON_GetArraySize(json_obj); config_buff = rpc_new0(ip_config_t, iCount); conf_type = rpc_new0(uint, iCount); @@ -146,11 +146,11 @@ ret_code ip_config_json_parse_array(pointer input, uint *conf_type, { memset(ip_config, 0, sizeof(ip_config_string_t)); - s2j_struct_get_basic_element(ip_config, json_obj, int, config_type); - s2j_struct_get_basic_element(ip_config, json_obj, string, ifname); - s2j_struct_get_basic_element(ip_config, json_obj, int, family); - s2j_struct_get_basic_element(ip_config, json_obj, string, ipaddr); - s2j_struct_get_basic_element(ip_config, json_obj, int, prefixlen); + s2j_struct_get_basic_element(ip_config, pArrayItem, int, config_type); + s2j_struct_get_string_element(ip_config, pArrayItem, ifname, INTERFACE_NAMSIZ); + s2j_struct_get_basic_element(ip_config, pArrayItem, int, family); + s2j_struct_get_string_element(ip_config, pArrayItem, ipaddr, DOT_IP_STR); + s2j_struct_get_basic_element(ip_config, pArrayItem, int, prefixlen); strncpy(config_buff[*cnt].ifname, ip_config->ifname, INTERFACE_NAMSIZ - 1); config_buff[*cnt].family = (uchar)ip_config->family; @@ -174,16 +174,14 @@ ret_code ip_config_format_json(ip_config_t *config_buff, { ip_config_string_t tem_buff = {0}; ip_config_string_t *ip_config = &tem_buff; - //cJSON *json_obj = NULL; char *json_ip; - ip_config->family = AF_INET; - ip_config->prefixlen = config_buff->prefixlen; + ip_config->family = AF_INET; + ip_config->prefixlen = config_buff->prefixlen; strncpy(ip_config->ifname, config_buff->ifname, INTERFACE_NAMSIZ - 1); strncpy(ip_config->ipaddr, inet_ntoa(config_buff->prefix), DOT_IP_STR - 1); - /* create Student JSON object */ s2j_create_json_obj(json_obj); if(json_obj == NULL) { @@ -194,25 +192,19 @@ ret_code ip_config_format_json(ip_config_t *config_buff, s2j_json_set_basic_element(json_obj, ip_config, int, family); s2j_json_set_basic_element(json_obj, ip_config, string, ipaddr); s2j_json_set_basic_element(json_obj, ip_config, int, prefixlen); - - json_ip = cJSON_PrintUnformatted(json_obj); - *outlen = strlen(json_ip) + 1; - memcpy(output, json_ip, *outlen); - - free(json_ip); - cJSON_Delete(json_obj); + + *outlen = cm_format_data(RET_OK, json_obj, output); return RET_OK; } ret_code ip_config_format_json_array(ip_config_t *config_buff, - int count, pointer output, int *outlen) + int count, pointer output, + int *outlen) { ip_config_string_t tem_buff = {0}; ip_config_string_t *ip_config = &tem_buff; cJSON *json_array = NULL; - //cJSON *json_obj = NULL; - char *json_ip; int i; json_array = cJSON_CreateArray(); @@ -230,7 +222,6 @@ ret_code ip_config_format_json_array(ip_config_t *config_buff, strncpy(ip_config->ifname, config_buff[i].ifname, INTERFACE_NAMSIZ - 1); strncpy(ip_config->ipaddr, inet_ntoa(config_buff[i].prefix), DOT_IP_STR - 1); - /* create Student JSON object */ s2j_create_json_obj(json_obj); if(json_obj == NULL) { @@ -245,12 +236,9 @@ ret_code ip_config_format_json_array(ip_config_t *config_buff, s2j_json_set_basic_element(json_obj, ip_config, int, prefixlen); } - json_ip = cJSON_PrintUnformatted(json_array); - *outlen = strlen(json_ip) + 1; - memcpy(output, json_ip, *outlen); - - free(json_ip); - cJSON_Delete(json_array); + + *outlen = cm_format_data(RET_OK, json_array, output); + return RET_OK; }