mirror of
https://github.com/open5gs/open5gs.git
synced 2026-05-02 13:20:08 +00:00
607 lines
22 KiB
C
607 lines
22 KiB
C
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <stdio.h>
|
|
#include "service_experience_info.h"
|
|
|
|
OpenAPI_service_experience_info_t *OpenAPI_service_experience_info_create(
|
|
OpenAPI_svc_experience_t *svc_exprc,
|
|
bool is_svc_exprc_variance,
|
|
float svc_exprc_variance,
|
|
OpenAPI_list_t *supis,
|
|
OpenAPI_snssai_t *snssai,
|
|
char *app_id,
|
|
OpenAPI_service_experience_type_t *srv_expc_type,
|
|
OpenAPI_list_t *ue_locs,
|
|
OpenAPI_upf_information_t *upf_info,
|
|
char *dnai,
|
|
OpenAPI_addr_fqdn_t *app_server_inst,
|
|
bool is_confidence,
|
|
int confidence,
|
|
char *dnn,
|
|
OpenAPI_network_area_info_t *network_area,
|
|
char *nsi_id,
|
|
bool is_ratio,
|
|
int ratio,
|
|
OpenAPI_rat_freq_information_t *rat_freq
|
|
)
|
|
{
|
|
OpenAPI_service_experience_info_t *service_experience_info_local_var = ogs_malloc(sizeof(OpenAPI_service_experience_info_t));
|
|
ogs_assert(service_experience_info_local_var);
|
|
|
|
service_experience_info_local_var->svc_exprc = svc_exprc;
|
|
service_experience_info_local_var->is_svc_exprc_variance = is_svc_exprc_variance;
|
|
service_experience_info_local_var->svc_exprc_variance = svc_exprc_variance;
|
|
service_experience_info_local_var->supis = supis;
|
|
service_experience_info_local_var->snssai = snssai;
|
|
service_experience_info_local_var->app_id = app_id;
|
|
service_experience_info_local_var->srv_expc_type = srv_expc_type;
|
|
service_experience_info_local_var->ue_locs = ue_locs;
|
|
service_experience_info_local_var->upf_info = upf_info;
|
|
service_experience_info_local_var->dnai = dnai;
|
|
service_experience_info_local_var->app_server_inst = app_server_inst;
|
|
service_experience_info_local_var->is_confidence = is_confidence;
|
|
service_experience_info_local_var->confidence = confidence;
|
|
service_experience_info_local_var->dnn = dnn;
|
|
service_experience_info_local_var->network_area = network_area;
|
|
service_experience_info_local_var->nsi_id = nsi_id;
|
|
service_experience_info_local_var->is_ratio = is_ratio;
|
|
service_experience_info_local_var->ratio = ratio;
|
|
service_experience_info_local_var->rat_freq = rat_freq;
|
|
|
|
return service_experience_info_local_var;
|
|
}
|
|
|
|
void OpenAPI_service_experience_info_free(OpenAPI_service_experience_info_t *service_experience_info)
|
|
{
|
|
OpenAPI_lnode_t *node = NULL;
|
|
|
|
if (NULL == service_experience_info) {
|
|
return;
|
|
}
|
|
if (service_experience_info->svc_exprc) {
|
|
OpenAPI_svc_experience_free(service_experience_info->svc_exprc);
|
|
service_experience_info->svc_exprc = NULL;
|
|
}
|
|
if (service_experience_info->supis) {
|
|
OpenAPI_list_for_each(service_experience_info->supis, node) {
|
|
ogs_free(node->data);
|
|
}
|
|
OpenAPI_list_free(service_experience_info->supis);
|
|
service_experience_info->supis = NULL;
|
|
}
|
|
if (service_experience_info->snssai) {
|
|
OpenAPI_snssai_free(service_experience_info->snssai);
|
|
service_experience_info->snssai = NULL;
|
|
}
|
|
if (service_experience_info->app_id) {
|
|
ogs_free(service_experience_info->app_id);
|
|
service_experience_info->app_id = NULL;
|
|
}
|
|
if (service_experience_info->srv_expc_type) {
|
|
OpenAPI_service_experience_type_free(service_experience_info->srv_expc_type);
|
|
service_experience_info->srv_expc_type = NULL;
|
|
}
|
|
if (service_experience_info->ue_locs) {
|
|
OpenAPI_list_for_each(service_experience_info->ue_locs, node) {
|
|
OpenAPI_location_info_free(node->data);
|
|
}
|
|
OpenAPI_list_free(service_experience_info->ue_locs);
|
|
service_experience_info->ue_locs = NULL;
|
|
}
|
|
if (service_experience_info->upf_info) {
|
|
OpenAPI_upf_information_free(service_experience_info->upf_info);
|
|
service_experience_info->upf_info = NULL;
|
|
}
|
|
if (service_experience_info->dnai) {
|
|
ogs_free(service_experience_info->dnai);
|
|
service_experience_info->dnai = NULL;
|
|
}
|
|
if (service_experience_info->app_server_inst) {
|
|
OpenAPI_addr_fqdn_free(service_experience_info->app_server_inst);
|
|
service_experience_info->app_server_inst = NULL;
|
|
}
|
|
if (service_experience_info->dnn) {
|
|
ogs_free(service_experience_info->dnn);
|
|
service_experience_info->dnn = NULL;
|
|
}
|
|
if (service_experience_info->network_area) {
|
|
OpenAPI_network_area_info_free(service_experience_info->network_area);
|
|
service_experience_info->network_area = NULL;
|
|
}
|
|
if (service_experience_info->nsi_id) {
|
|
ogs_free(service_experience_info->nsi_id);
|
|
service_experience_info->nsi_id = NULL;
|
|
}
|
|
if (service_experience_info->rat_freq) {
|
|
OpenAPI_rat_freq_information_free(service_experience_info->rat_freq);
|
|
service_experience_info->rat_freq = NULL;
|
|
}
|
|
ogs_free(service_experience_info);
|
|
}
|
|
|
|
cJSON *OpenAPI_service_experience_info_convertToJSON(OpenAPI_service_experience_info_t *service_experience_info)
|
|
{
|
|
cJSON *item = NULL;
|
|
OpenAPI_lnode_t *node = NULL;
|
|
|
|
if (service_experience_info == NULL) {
|
|
ogs_error("OpenAPI_service_experience_info_convertToJSON() failed [ServiceExperienceInfo]");
|
|
return NULL;
|
|
}
|
|
|
|
item = cJSON_CreateObject();
|
|
if (!service_experience_info->svc_exprc) {
|
|
ogs_error("OpenAPI_service_experience_info_convertToJSON() failed [svc_exprc]");
|
|
return NULL;
|
|
}
|
|
cJSON *svc_exprc_local_JSON = OpenAPI_svc_experience_convertToJSON(service_experience_info->svc_exprc);
|
|
if (svc_exprc_local_JSON == NULL) {
|
|
ogs_error("OpenAPI_service_experience_info_convertToJSON() failed [svc_exprc]");
|
|
goto end;
|
|
}
|
|
cJSON_AddItemToObject(item, "svcExprc", svc_exprc_local_JSON);
|
|
if (item->child == NULL) {
|
|
ogs_error("OpenAPI_service_experience_info_convertToJSON() failed [svc_exprc]");
|
|
goto end;
|
|
}
|
|
|
|
if (service_experience_info->is_svc_exprc_variance) {
|
|
if (cJSON_AddNumberToObject(item, "svcExprcVariance", service_experience_info->svc_exprc_variance) == NULL) {
|
|
ogs_error("OpenAPI_service_experience_info_convertToJSON() failed [svc_exprc_variance]");
|
|
goto end;
|
|
}
|
|
}
|
|
|
|
if (service_experience_info->supis) {
|
|
cJSON *supisList = cJSON_AddArrayToObject(item, "supis");
|
|
if (supisList == NULL) {
|
|
ogs_error("OpenAPI_service_experience_info_convertToJSON() failed [supis]");
|
|
goto end;
|
|
}
|
|
OpenAPI_list_for_each(service_experience_info->supis, node) {
|
|
if (cJSON_AddStringToObject(supisList, "", (char*)node->data) == NULL) {
|
|
ogs_error("OpenAPI_service_experience_info_convertToJSON() failed [supis]");
|
|
goto end;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (service_experience_info->snssai) {
|
|
cJSON *snssai_local_JSON = OpenAPI_snssai_convertToJSON(service_experience_info->snssai);
|
|
if (snssai_local_JSON == NULL) {
|
|
ogs_error("OpenAPI_service_experience_info_convertToJSON() failed [snssai]");
|
|
goto end;
|
|
}
|
|
cJSON_AddItemToObject(item, "snssai", snssai_local_JSON);
|
|
if (item->child == NULL) {
|
|
ogs_error("OpenAPI_service_experience_info_convertToJSON() failed [snssai]");
|
|
goto end;
|
|
}
|
|
}
|
|
|
|
if (service_experience_info->app_id) {
|
|
if (cJSON_AddStringToObject(item, "appId", service_experience_info->app_id) == NULL) {
|
|
ogs_error("OpenAPI_service_experience_info_convertToJSON() failed [app_id]");
|
|
goto end;
|
|
}
|
|
}
|
|
|
|
if (service_experience_info->srv_expc_type) {
|
|
cJSON *srv_expc_type_local_JSON = OpenAPI_service_experience_type_convertToJSON(service_experience_info->srv_expc_type);
|
|
if (srv_expc_type_local_JSON == NULL) {
|
|
ogs_error("OpenAPI_service_experience_info_convertToJSON() failed [srv_expc_type]");
|
|
goto end;
|
|
}
|
|
cJSON_AddItemToObject(item, "srvExpcType", srv_expc_type_local_JSON);
|
|
if (item->child == NULL) {
|
|
ogs_error("OpenAPI_service_experience_info_convertToJSON() failed [srv_expc_type]");
|
|
goto end;
|
|
}
|
|
}
|
|
|
|
if (service_experience_info->ue_locs) {
|
|
cJSON *ue_locsList = cJSON_AddArrayToObject(item, "ueLocs");
|
|
if (ue_locsList == NULL) {
|
|
ogs_error("OpenAPI_service_experience_info_convertToJSON() failed [ue_locs]");
|
|
goto end;
|
|
}
|
|
OpenAPI_list_for_each(service_experience_info->ue_locs, node) {
|
|
cJSON *itemLocal = OpenAPI_location_info_convertToJSON(node->data);
|
|
if (itemLocal == NULL) {
|
|
ogs_error("OpenAPI_service_experience_info_convertToJSON() failed [ue_locs]");
|
|
goto end;
|
|
}
|
|
cJSON_AddItemToArray(ue_locsList, itemLocal);
|
|
}
|
|
}
|
|
|
|
if (service_experience_info->upf_info) {
|
|
cJSON *upf_info_local_JSON = OpenAPI_upf_information_convertToJSON(service_experience_info->upf_info);
|
|
if (upf_info_local_JSON == NULL) {
|
|
ogs_error("OpenAPI_service_experience_info_convertToJSON() failed [upf_info]");
|
|
goto end;
|
|
}
|
|
cJSON_AddItemToObject(item, "upfInfo", upf_info_local_JSON);
|
|
if (item->child == NULL) {
|
|
ogs_error("OpenAPI_service_experience_info_convertToJSON() failed [upf_info]");
|
|
goto end;
|
|
}
|
|
}
|
|
|
|
if (service_experience_info->dnai) {
|
|
if (cJSON_AddStringToObject(item, "dnai", service_experience_info->dnai) == NULL) {
|
|
ogs_error("OpenAPI_service_experience_info_convertToJSON() failed [dnai]");
|
|
goto end;
|
|
}
|
|
}
|
|
|
|
if (service_experience_info->app_server_inst) {
|
|
cJSON *app_server_inst_local_JSON = OpenAPI_addr_fqdn_convertToJSON(service_experience_info->app_server_inst);
|
|
if (app_server_inst_local_JSON == NULL) {
|
|
ogs_error("OpenAPI_service_experience_info_convertToJSON() failed [app_server_inst]");
|
|
goto end;
|
|
}
|
|
cJSON_AddItemToObject(item, "appServerInst", app_server_inst_local_JSON);
|
|
if (item->child == NULL) {
|
|
ogs_error("OpenAPI_service_experience_info_convertToJSON() failed [app_server_inst]");
|
|
goto end;
|
|
}
|
|
}
|
|
|
|
if (service_experience_info->is_confidence) {
|
|
if (cJSON_AddNumberToObject(item, "confidence", service_experience_info->confidence) == NULL) {
|
|
ogs_error("OpenAPI_service_experience_info_convertToJSON() failed [confidence]");
|
|
goto end;
|
|
}
|
|
}
|
|
|
|
if (service_experience_info->dnn) {
|
|
if (cJSON_AddStringToObject(item, "dnn", service_experience_info->dnn) == NULL) {
|
|
ogs_error("OpenAPI_service_experience_info_convertToJSON() failed [dnn]");
|
|
goto end;
|
|
}
|
|
}
|
|
|
|
if (service_experience_info->network_area) {
|
|
cJSON *network_area_local_JSON = OpenAPI_network_area_info_convertToJSON(service_experience_info->network_area);
|
|
if (network_area_local_JSON == NULL) {
|
|
ogs_error("OpenAPI_service_experience_info_convertToJSON() failed [network_area]");
|
|
goto end;
|
|
}
|
|
cJSON_AddItemToObject(item, "networkArea", network_area_local_JSON);
|
|
if (item->child == NULL) {
|
|
ogs_error("OpenAPI_service_experience_info_convertToJSON() failed [network_area]");
|
|
goto end;
|
|
}
|
|
}
|
|
|
|
if (service_experience_info->nsi_id) {
|
|
if (cJSON_AddStringToObject(item, "nsiId", service_experience_info->nsi_id) == NULL) {
|
|
ogs_error("OpenAPI_service_experience_info_convertToJSON() failed [nsi_id]");
|
|
goto end;
|
|
}
|
|
}
|
|
|
|
if (service_experience_info->is_ratio) {
|
|
if (cJSON_AddNumberToObject(item, "ratio", service_experience_info->ratio) == NULL) {
|
|
ogs_error("OpenAPI_service_experience_info_convertToJSON() failed [ratio]");
|
|
goto end;
|
|
}
|
|
}
|
|
|
|
if (service_experience_info->rat_freq) {
|
|
cJSON *rat_freq_local_JSON = OpenAPI_rat_freq_information_convertToJSON(service_experience_info->rat_freq);
|
|
if (rat_freq_local_JSON == NULL) {
|
|
ogs_error("OpenAPI_service_experience_info_convertToJSON() failed [rat_freq]");
|
|
goto end;
|
|
}
|
|
cJSON_AddItemToObject(item, "ratFreq", rat_freq_local_JSON);
|
|
if (item->child == NULL) {
|
|
ogs_error("OpenAPI_service_experience_info_convertToJSON() failed [rat_freq]");
|
|
goto end;
|
|
}
|
|
}
|
|
|
|
end:
|
|
return item;
|
|
}
|
|
|
|
OpenAPI_service_experience_info_t *OpenAPI_service_experience_info_parseFromJSON(cJSON *service_experience_infoJSON)
|
|
{
|
|
OpenAPI_service_experience_info_t *service_experience_info_local_var = NULL;
|
|
OpenAPI_lnode_t *node = NULL;
|
|
cJSON *svc_exprc = NULL;
|
|
OpenAPI_svc_experience_t *svc_exprc_local_nonprim = NULL;
|
|
cJSON *svc_exprc_variance = NULL;
|
|
cJSON *supis = NULL;
|
|
OpenAPI_list_t *supisList = NULL;
|
|
cJSON *snssai = NULL;
|
|
OpenAPI_snssai_t *snssai_local_nonprim = NULL;
|
|
cJSON *app_id = NULL;
|
|
cJSON *srv_expc_type = NULL;
|
|
OpenAPI_service_experience_type_t *srv_expc_type_local_nonprim = NULL;
|
|
cJSON *ue_locs = NULL;
|
|
OpenAPI_list_t *ue_locsList = NULL;
|
|
cJSON *upf_info = NULL;
|
|
OpenAPI_upf_information_t *upf_info_local_nonprim = NULL;
|
|
cJSON *dnai = NULL;
|
|
cJSON *app_server_inst = NULL;
|
|
OpenAPI_addr_fqdn_t *app_server_inst_local_nonprim = NULL;
|
|
cJSON *confidence = NULL;
|
|
cJSON *dnn = NULL;
|
|
cJSON *network_area = NULL;
|
|
OpenAPI_network_area_info_t *network_area_local_nonprim = NULL;
|
|
cJSON *nsi_id = NULL;
|
|
cJSON *ratio = NULL;
|
|
cJSON *rat_freq = NULL;
|
|
OpenAPI_rat_freq_information_t *rat_freq_local_nonprim = NULL;
|
|
svc_exprc = cJSON_GetObjectItemCaseSensitive(service_experience_infoJSON, "svcExprc");
|
|
if (!svc_exprc) {
|
|
ogs_error("OpenAPI_service_experience_info_parseFromJSON() failed [svc_exprc]");
|
|
goto end;
|
|
}
|
|
svc_exprc_local_nonprim = OpenAPI_svc_experience_parseFromJSON(svc_exprc);
|
|
if (!svc_exprc_local_nonprim) {
|
|
ogs_error("OpenAPI_svc_experience_parseFromJSON failed [svc_exprc]");
|
|
goto end;
|
|
}
|
|
|
|
svc_exprc_variance = cJSON_GetObjectItemCaseSensitive(service_experience_infoJSON, "svcExprcVariance");
|
|
if (svc_exprc_variance) {
|
|
if (!cJSON_IsNumber(svc_exprc_variance)) {
|
|
ogs_error("OpenAPI_service_experience_info_parseFromJSON() failed [svc_exprc_variance]");
|
|
goto end;
|
|
}
|
|
}
|
|
|
|
supis = cJSON_GetObjectItemCaseSensitive(service_experience_infoJSON, "supis");
|
|
if (supis) {
|
|
cJSON *supis_local = NULL;
|
|
if (!cJSON_IsArray(supis)) {
|
|
ogs_error("OpenAPI_service_experience_info_parseFromJSON() failed [supis]");
|
|
goto end;
|
|
}
|
|
|
|
supisList = OpenAPI_list_create();
|
|
|
|
cJSON_ArrayForEach(supis_local, supis) {
|
|
double *localDouble = NULL;
|
|
int *localInt = NULL;
|
|
if (!cJSON_IsString(supis_local)) {
|
|
ogs_error("OpenAPI_service_experience_info_parseFromJSON() failed [supis]");
|
|
goto end;
|
|
}
|
|
OpenAPI_list_add(supisList, ogs_strdup(supis_local->valuestring));
|
|
}
|
|
}
|
|
|
|
snssai = cJSON_GetObjectItemCaseSensitive(service_experience_infoJSON, "snssai");
|
|
if (snssai) {
|
|
snssai_local_nonprim = OpenAPI_snssai_parseFromJSON(snssai);
|
|
if (!snssai_local_nonprim) {
|
|
ogs_error("OpenAPI_snssai_parseFromJSON failed [snssai]");
|
|
goto end;
|
|
}
|
|
}
|
|
|
|
app_id = cJSON_GetObjectItemCaseSensitive(service_experience_infoJSON, "appId");
|
|
if (app_id) {
|
|
if (!cJSON_IsString(app_id) && !cJSON_IsNull(app_id)) {
|
|
ogs_error("OpenAPI_service_experience_info_parseFromJSON() failed [app_id]");
|
|
goto end;
|
|
}
|
|
}
|
|
|
|
srv_expc_type = cJSON_GetObjectItemCaseSensitive(service_experience_infoJSON, "srvExpcType");
|
|
if (srv_expc_type) {
|
|
srv_expc_type_local_nonprim = OpenAPI_service_experience_type_parseFromJSON(srv_expc_type);
|
|
if (!srv_expc_type_local_nonprim) {
|
|
ogs_error("OpenAPI_service_experience_type_parseFromJSON failed [srv_expc_type]");
|
|
goto end;
|
|
}
|
|
}
|
|
|
|
ue_locs = cJSON_GetObjectItemCaseSensitive(service_experience_infoJSON, "ueLocs");
|
|
if (ue_locs) {
|
|
cJSON *ue_locs_local = NULL;
|
|
if (!cJSON_IsArray(ue_locs)) {
|
|
ogs_error("OpenAPI_service_experience_info_parseFromJSON() failed [ue_locs]");
|
|
goto end;
|
|
}
|
|
|
|
ue_locsList = OpenAPI_list_create();
|
|
|
|
cJSON_ArrayForEach(ue_locs_local, ue_locs) {
|
|
if (!cJSON_IsObject(ue_locs_local)) {
|
|
ogs_error("OpenAPI_service_experience_info_parseFromJSON() failed [ue_locs]");
|
|
goto end;
|
|
}
|
|
OpenAPI_location_info_t *ue_locsItem = OpenAPI_location_info_parseFromJSON(ue_locs_local);
|
|
if (!ue_locsItem) {
|
|
ogs_error("No ue_locsItem");
|
|
goto end;
|
|
}
|
|
OpenAPI_list_add(ue_locsList, ue_locsItem);
|
|
}
|
|
}
|
|
|
|
upf_info = cJSON_GetObjectItemCaseSensitive(service_experience_infoJSON, "upfInfo");
|
|
if (upf_info) {
|
|
upf_info_local_nonprim = OpenAPI_upf_information_parseFromJSON(upf_info);
|
|
if (!upf_info_local_nonprim) {
|
|
ogs_error("OpenAPI_upf_information_parseFromJSON failed [upf_info]");
|
|
goto end;
|
|
}
|
|
}
|
|
|
|
dnai = cJSON_GetObjectItemCaseSensitive(service_experience_infoJSON, "dnai");
|
|
if (dnai) {
|
|
if (!cJSON_IsString(dnai) && !cJSON_IsNull(dnai)) {
|
|
ogs_error("OpenAPI_service_experience_info_parseFromJSON() failed [dnai]");
|
|
goto end;
|
|
}
|
|
}
|
|
|
|
app_server_inst = cJSON_GetObjectItemCaseSensitive(service_experience_infoJSON, "appServerInst");
|
|
if (app_server_inst) {
|
|
app_server_inst_local_nonprim = OpenAPI_addr_fqdn_parseFromJSON(app_server_inst);
|
|
if (!app_server_inst_local_nonprim) {
|
|
ogs_error("OpenAPI_addr_fqdn_parseFromJSON failed [app_server_inst]");
|
|
goto end;
|
|
}
|
|
}
|
|
|
|
confidence = cJSON_GetObjectItemCaseSensitive(service_experience_infoJSON, "confidence");
|
|
if (confidence) {
|
|
if (!cJSON_IsNumber(confidence)) {
|
|
ogs_error("OpenAPI_service_experience_info_parseFromJSON() failed [confidence]");
|
|
goto end;
|
|
}
|
|
}
|
|
|
|
dnn = cJSON_GetObjectItemCaseSensitive(service_experience_infoJSON, "dnn");
|
|
if (dnn) {
|
|
if (!cJSON_IsString(dnn) && !cJSON_IsNull(dnn)) {
|
|
ogs_error("OpenAPI_service_experience_info_parseFromJSON() failed [dnn]");
|
|
goto end;
|
|
}
|
|
}
|
|
|
|
network_area = cJSON_GetObjectItemCaseSensitive(service_experience_infoJSON, "networkArea");
|
|
if (network_area) {
|
|
network_area_local_nonprim = OpenAPI_network_area_info_parseFromJSON(network_area);
|
|
if (!network_area_local_nonprim) {
|
|
ogs_error("OpenAPI_network_area_info_parseFromJSON failed [network_area]");
|
|
goto end;
|
|
}
|
|
}
|
|
|
|
nsi_id = cJSON_GetObjectItemCaseSensitive(service_experience_infoJSON, "nsiId");
|
|
if (nsi_id) {
|
|
if (!cJSON_IsString(nsi_id) && !cJSON_IsNull(nsi_id)) {
|
|
ogs_error("OpenAPI_service_experience_info_parseFromJSON() failed [nsi_id]");
|
|
goto end;
|
|
}
|
|
}
|
|
|
|
ratio = cJSON_GetObjectItemCaseSensitive(service_experience_infoJSON, "ratio");
|
|
if (ratio) {
|
|
if (!cJSON_IsNumber(ratio)) {
|
|
ogs_error("OpenAPI_service_experience_info_parseFromJSON() failed [ratio]");
|
|
goto end;
|
|
}
|
|
}
|
|
|
|
rat_freq = cJSON_GetObjectItemCaseSensitive(service_experience_infoJSON, "ratFreq");
|
|
if (rat_freq) {
|
|
rat_freq_local_nonprim = OpenAPI_rat_freq_information_parseFromJSON(rat_freq);
|
|
if (!rat_freq_local_nonprim) {
|
|
ogs_error("OpenAPI_rat_freq_information_parseFromJSON failed [rat_freq]");
|
|
goto end;
|
|
}
|
|
}
|
|
|
|
service_experience_info_local_var = OpenAPI_service_experience_info_create (
|
|
svc_exprc_local_nonprim,
|
|
svc_exprc_variance ? true : false,
|
|
svc_exprc_variance ? svc_exprc_variance->valuedouble : 0,
|
|
supis ? supisList : NULL,
|
|
snssai ? snssai_local_nonprim : NULL,
|
|
app_id && !cJSON_IsNull(app_id) ? ogs_strdup(app_id->valuestring) : NULL,
|
|
srv_expc_type ? srv_expc_type_local_nonprim : NULL,
|
|
ue_locs ? ue_locsList : NULL,
|
|
upf_info ? upf_info_local_nonprim : NULL,
|
|
dnai && !cJSON_IsNull(dnai) ? ogs_strdup(dnai->valuestring) : NULL,
|
|
app_server_inst ? app_server_inst_local_nonprim : NULL,
|
|
confidence ? true : false,
|
|
confidence ? confidence->valuedouble : 0,
|
|
dnn && !cJSON_IsNull(dnn) ? ogs_strdup(dnn->valuestring) : NULL,
|
|
network_area ? network_area_local_nonprim : NULL,
|
|
nsi_id && !cJSON_IsNull(nsi_id) ? ogs_strdup(nsi_id->valuestring) : NULL,
|
|
ratio ? true : false,
|
|
ratio ? ratio->valuedouble : 0,
|
|
rat_freq ? rat_freq_local_nonprim : NULL
|
|
);
|
|
|
|
return service_experience_info_local_var;
|
|
end:
|
|
if (svc_exprc_local_nonprim) {
|
|
OpenAPI_svc_experience_free(svc_exprc_local_nonprim);
|
|
svc_exprc_local_nonprim = NULL;
|
|
}
|
|
if (supisList) {
|
|
OpenAPI_list_for_each(supisList, node) {
|
|
ogs_free(node->data);
|
|
}
|
|
OpenAPI_list_free(supisList);
|
|
supisList = NULL;
|
|
}
|
|
if (snssai_local_nonprim) {
|
|
OpenAPI_snssai_free(snssai_local_nonprim);
|
|
snssai_local_nonprim = NULL;
|
|
}
|
|
if (srv_expc_type_local_nonprim) {
|
|
OpenAPI_service_experience_type_free(srv_expc_type_local_nonprim);
|
|
srv_expc_type_local_nonprim = NULL;
|
|
}
|
|
if (ue_locsList) {
|
|
OpenAPI_list_for_each(ue_locsList, node) {
|
|
OpenAPI_location_info_free(node->data);
|
|
}
|
|
OpenAPI_list_free(ue_locsList);
|
|
ue_locsList = NULL;
|
|
}
|
|
if (upf_info_local_nonprim) {
|
|
OpenAPI_upf_information_free(upf_info_local_nonprim);
|
|
upf_info_local_nonprim = NULL;
|
|
}
|
|
if (app_server_inst_local_nonprim) {
|
|
OpenAPI_addr_fqdn_free(app_server_inst_local_nonprim);
|
|
app_server_inst_local_nonprim = NULL;
|
|
}
|
|
if (network_area_local_nonprim) {
|
|
OpenAPI_network_area_info_free(network_area_local_nonprim);
|
|
network_area_local_nonprim = NULL;
|
|
}
|
|
if (rat_freq_local_nonprim) {
|
|
OpenAPI_rat_freq_information_free(rat_freq_local_nonprim);
|
|
rat_freq_local_nonprim = NULL;
|
|
}
|
|
return NULL;
|
|
}
|
|
|
|
OpenAPI_service_experience_info_t *OpenAPI_service_experience_info_copy(OpenAPI_service_experience_info_t *dst, OpenAPI_service_experience_info_t *src)
|
|
{
|
|
cJSON *item = NULL;
|
|
char *content = NULL;
|
|
|
|
ogs_assert(src);
|
|
item = OpenAPI_service_experience_info_convertToJSON(src);
|
|
if (!item) {
|
|
ogs_error("OpenAPI_service_experience_info_convertToJSON() failed");
|
|
return NULL;
|
|
}
|
|
|
|
content = cJSON_Print(item);
|
|
cJSON_Delete(item);
|
|
|
|
if (!content) {
|
|
ogs_error("cJSON_Print() failed");
|
|
return NULL;
|
|
}
|
|
|
|
item = cJSON_Parse(content);
|
|
ogs_free(content);
|
|
if (!item) {
|
|
ogs_error("cJSON_Parse() failed");
|
|
return NULL;
|
|
}
|
|
|
|
OpenAPI_service_experience_info_free(dst);
|
|
dst = OpenAPI_service_experience_info_parseFromJSON(item);
|
|
cJSON_Delete(item);
|
|
|
|
return dst;
|
|
}
|
|
|