#include #include #include #include "event_notification.h" OpenAPI_event_notification_t *OpenAPI_event_notification_create( OpenAPI_nwdaf_event_t *event, char *start, char *expiry, char *time_stamp_gen, OpenAPI_nwdaf_failure_code_t *fail_notify_code, bool is_rv_wait_time, int rv_wait_time, OpenAPI_analytics_metadata_info_t *ana_meta_info, OpenAPI_list_t *nf_load_level_infos, OpenAPI_list_t *nsi_load_level_infos, OpenAPI_slice_load_level_information_t *slice_load_level_info, OpenAPI_list_t *svc_exps, OpenAPI_list_t *qos_sustain_infos, OpenAPI_list_t *ue_comms, OpenAPI_list_t *ue_mobs, OpenAPI_list_t *user_data_cong_infos, OpenAPI_list_t *abnor_behavrs, OpenAPI_list_t *nw_perfs, OpenAPI_list_t *dn_perf_infos, OpenAPI_list_t *disper_infos, OpenAPI_list_t *red_trans_infos, OpenAPI_list_t *wlan_infos, OpenAPI_list_t *smcc_exps ) { OpenAPI_event_notification_t *event_notification_local_var = ogs_malloc(sizeof(OpenAPI_event_notification_t)); ogs_assert(event_notification_local_var); event_notification_local_var->event = event; event_notification_local_var->start = start; event_notification_local_var->expiry = expiry; event_notification_local_var->time_stamp_gen = time_stamp_gen; event_notification_local_var->fail_notify_code = fail_notify_code; event_notification_local_var->is_rv_wait_time = is_rv_wait_time; event_notification_local_var->rv_wait_time = rv_wait_time; event_notification_local_var->ana_meta_info = ana_meta_info; event_notification_local_var->nf_load_level_infos = nf_load_level_infos; event_notification_local_var->nsi_load_level_infos = nsi_load_level_infos; event_notification_local_var->slice_load_level_info = slice_load_level_info; event_notification_local_var->svc_exps = svc_exps; event_notification_local_var->qos_sustain_infos = qos_sustain_infos; event_notification_local_var->ue_comms = ue_comms; event_notification_local_var->ue_mobs = ue_mobs; event_notification_local_var->user_data_cong_infos = user_data_cong_infos; event_notification_local_var->abnor_behavrs = abnor_behavrs; event_notification_local_var->nw_perfs = nw_perfs; event_notification_local_var->dn_perf_infos = dn_perf_infos; event_notification_local_var->disper_infos = disper_infos; event_notification_local_var->red_trans_infos = red_trans_infos; event_notification_local_var->wlan_infos = wlan_infos; event_notification_local_var->smcc_exps = smcc_exps; return event_notification_local_var; } void OpenAPI_event_notification_free(OpenAPI_event_notification_t *event_notification) { OpenAPI_lnode_t *node = NULL; if (NULL == event_notification) { return; } if (event_notification->event) { OpenAPI_nwdaf_event_free(event_notification->event); event_notification->event = NULL; } if (event_notification->start) { ogs_free(event_notification->start); event_notification->start = NULL; } if (event_notification->expiry) { ogs_free(event_notification->expiry); event_notification->expiry = NULL; } if (event_notification->time_stamp_gen) { ogs_free(event_notification->time_stamp_gen); event_notification->time_stamp_gen = NULL; } if (event_notification->fail_notify_code) { OpenAPI_nwdaf_failure_code_free(event_notification->fail_notify_code); event_notification->fail_notify_code = NULL; } if (event_notification->ana_meta_info) { OpenAPI_analytics_metadata_info_free(event_notification->ana_meta_info); event_notification->ana_meta_info = NULL; } if (event_notification->nf_load_level_infos) { OpenAPI_list_for_each(event_notification->nf_load_level_infos, node) { OpenAPI_nf_load_level_information_free(node->data); } OpenAPI_list_free(event_notification->nf_load_level_infos); event_notification->nf_load_level_infos = NULL; } if (event_notification->nsi_load_level_infos) { OpenAPI_list_for_each(event_notification->nsi_load_level_infos, node) { OpenAPI_nsi_load_level_info_free(node->data); } OpenAPI_list_free(event_notification->nsi_load_level_infos); event_notification->nsi_load_level_infos = NULL; } if (event_notification->slice_load_level_info) { OpenAPI_slice_load_level_information_free(event_notification->slice_load_level_info); event_notification->slice_load_level_info = NULL; } if (event_notification->svc_exps) { OpenAPI_list_for_each(event_notification->svc_exps, node) { OpenAPI_service_experience_info_free(node->data); } OpenAPI_list_free(event_notification->svc_exps); event_notification->svc_exps = NULL; } if (event_notification->qos_sustain_infos) { OpenAPI_list_for_each(event_notification->qos_sustain_infos, node) { OpenAPI_qos_sustainability_info_free(node->data); } OpenAPI_list_free(event_notification->qos_sustain_infos); event_notification->qos_sustain_infos = NULL; } if (event_notification->ue_comms) { OpenAPI_list_for_each(event_notification->ue_comms, node) { OpenAPI_ue_communication_free(node->data); } OpenAPI_list_free(event_notification->ue_comms); event_notification->ue_comms = NULL; } if (event_notification->ue_mobs) { OpenAPI_list_for_each(event_notification->ue_mobs, node) { OpenAPI_ue_mobility_free(node->data); } OpenAPI_list_free(event_notification->ue_mobs); event_notification->ue_mobs = NULL; } if (event_notification->user_data_cong_infos) { OpenAPI_list_for_each(event_notification->user_data_cong_infos, node) { OpenAPI_user_data_congestion_info_free(node->data); } OpenAPI_list_free(event_notification->user_data_cong_infos); event_notification->user_data_cong_infos = NULL; } if (event_notification->abnor_behavrs) { OpenAPI_list_for_each(event_notification->abnor_behavrs, node) { OpenAPI_abnormal_behaviour_free(node->data); } OpenAPI_list_free(event_notification->abnor_behavrs); event_notification->abnor_behavrs = NULL; } if (event_notification->nw_perfs) { OpenAPI_list_for_each(event_notification->nw_perfs, node) { OpenAPI_network_perf_info_free(node->data); } OpenAPI_list_free(event_notification->nw_perfs); event_notification->nw_perfs = NULL; } if (event_notification->dn_perf_infos) { OpenAPI_list_for_each(event_notification->dn_perf_infos, node) { OpenAPI_dn_perf_info_free(node->data); } OpenAPI_list_free(event_notification->dn_perf_infos); event_notification->dn_perf_infos = NULL; } if (event_notification->disper_infos) { OpenAPI_list_for_each(event_notification->disper_infos, node) { OpenAPI_dispersion_info_free(node->data); } OpenAPI_list_free(event_notification->disper_infos); event_notification->disper_infos = NULL; } if (event_notification->red_trans_infos) { OpenAPI_list_for_each(event_notification->red_trans_infos, node) { OpenAPI_redundant_transmission_exp_info_free(node->data); } OpenAPI_list_free(event_notification->red_trans_infos); event_notification->red_trans_infos = NULL; } if (event_notification->wlan_infos) { OpenAPI_list_for_each(event_notification->wlan_infos, node) { OpenAPI_wlan_performance_info_free(node->data); } OpenAPI_list_free(event_notification->wlan_infos); event_notification->wlan_infos = NULL; } if (event_notification->smcc_exps) { OpenAPI_list_for_each(event_notification->smcc_exps, node) { OpenAPI_smcce_info_free(node->data); } OpenAPI_list_free(event_notification->smcc_exps); event_notification->smcc_exps = NULL; } ogs_free(event_notification); } cJSON *OpenAPI_event_notification_convertToJSON(OpenAPI_event_notification_t *event_notification) { cJSON *item = NULL; OpenAPI_lnode_t *node = NULL; if (event_notification == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [EventNotification]"); return NULL; } item = cJSON_CreateObject(); if (!event_notification->event) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [event]"); return NULL; } cJSON *event_local_JSON = OpenAPI_nwdaf_event_convertToJSON(event_notification->event); if (event_local_JSON == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [event]"); goto end; } cJSON_AddItemToObject(item, "event", event_local_JSON); if (item->child == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [event]"); goto end; } if (event_notification->start) { if (cJSON_AddStringToObject(item, "start", event_notification->start) == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [start]"); goto end; } } if (event_notification->expiry) { if (cJSON_AddStringToObject(item, "expiry", event_notification->expiry) == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [expiry]"); goto end; } } if (event_notification->time_stamp_gen) { if (cJSON_AddStringToObject(item, "timeStampGen", event_notification->time_stamp_gen) == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [time_stamp_gen]"); goto end; } } if (event_notification->fail_notify_code) { cJSON *fail_notify_code_local_JSON = OpenAPI_nwdaf_failure_code_convertToJSON(event_notification->fail_notify_code); if (fail_notify_code_local_JSON == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [fail_notify_code]"); goto end; } cJSON_AddItemToObject(item, "failNotifyCode", fail_notify_code_local_JSON); if (item->child == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [fail_notify_code]"); goto end; } } if (event_notification->is_rv_wait_time) { if (cJSON_AddNumberToObject(item, "rvWaitTime", event_notification->rv_wait_time) == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [rv_wait_time]"); goto end; } } if (event_notification->ana_meta_info) { cJSON *ana_meta_info_local_JSON = OpenAPI_analytics_metadata_info_convertToJSON(event_notification->ana_meta_info); if (ana_meta_info_local_JSON == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [ana_meta_info]"); goto end; } cJSON_AddItemToObject(item, "anaMetaInfo", ana_meta_info_local_JSON); if (item->child == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [ana_meta_info]"); goto end; } } if (event_notification->nf_load_level_infos) { cJSON *nf_load_level_infosList = cJSON_AddArrayToObject(item, "nfLoadLevelInfos"); if (nf_load_level_infosList == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [nf_load_level_infos]"); goto end; } OpenAPI_list_for_each(event_notification->nf_load_level_infos, node) { cJSON *itemLocal = OpenAPI_nf_load_level_information_convertToJSON(node->data); if (itemLocal == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [nf_load_level_infos]"); goto end; } cJSON_AddItemToArray(nf_load_level_infosList, itemLocal); } } if (event_notification->nsi_load_level_infos) { cJSON *nsi_load_level_infosList = cJSON_AddArrayToObject(item, "nsiLoadLevelInfos"); if (nsi_load_level_infosList == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [nsi_load_level_infos]"); goto end; } OpenAPI_list_for_each(event_notification->nsi_load_level_infos, node) { cJSON *itemLocal = OpenAPI_nsi_load_level_info_convertToJSON(node->data); if (itemLocal == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [nsi_load_level_infos]"); goto end; } cJSON_AddItemToArray(nsi_load_level_infosList, itemLocal); } } if (event_notification->slice_load_level_info) { cJSON *slice_load_level_info_local_JSON = OpenAPI_slice_load_level_information_convertToJSON(event_notification->slice_load_level_info); if (slice_load_level_info_local_JSON == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [slice_load_level_info]"); goto end; } cJSON_AddItemToObject(item, "sliceLoadLevelInfo", slice_load_level_info_local_JSON); if (item->child == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [slice_load_level_info]"); goto end; } } if (event_notification->svc_exps) { cJSON *svc_expsList = cJSON_AddArrayToObject(item, "svcExps"); if (svc_expsList == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [svc_exps]"); goto end; } OpenAPI_list_for_each(event_notification->svc_exps, node) { cJSON *itemLocal = OpenAPI_service_experience_info_convertToJSON(node->data); if (itemLocal == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [svc_exps]"); goto end; } cJSON_AddItemToArray(svc_expsList, itemLocal); } } if (event_notification->qos_sustain_infos) { cJSON *qos_sustain_infosList = cJSON_AddArrayToObject(item, "qosSustainInfos"); if (qos_sustain_infosList == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [qos_sustain_infos]"); goto end; } OpenAPI_list_for_each(event_notification->qos_sustain_infos, node) { cJSON *itemLocal = OpenAPI_qos_sustainability_info_convertToJSON(node->data); if (itemLocal == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [qos_sustain_infos]"); goto end; } cJSON_AddItemToArray(qos_sustain_infosList, itemLocal); } } if (event_notification->ue_comms) { cJSON *ue_commsList = cJSON_AddArrayToObject(item, "ueComms"); if (ue_commsList == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [ue_comms]"); goto end; } OpenAPI_list_for_each(event_notification->ue_comms, node) { cJSON *itemLocal = OpenAPI_ue_communication_convertToJSON(node->data); if (itemLocal == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [ue_comms]"); goto end; } cJSON_AddItemToArray(ue_commsList, itemLocal); } } if (event_notification->ue_mobs) { cJSON *ue_mobsList = cJSON_AddArrayToObject(item, "ueMobs"); if (ue_mobsList == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [ue_mobs]"); goto end; } OpenAPI_list_for_each(event_notification->ue_mobs, node) { cJSON *itemLocal = OpenAPI_ue_mobility_convertToJSON(node->data); if (itemLocal == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [ue_mobs]"); goto end; } cJSON_AddItemToArray(ue_mobsList, itemLocal); } } if (event_notification->user_data_cong_infos) { cJSON *user_data_cong_infosList = cJSON_AddArrayToObject(item, "userDataCongInfos"); if (user_data_cong_infosList == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [user_data_cong_infos]"); goto end; } OpenAPI_list_for_each(event_notification->user_data_cong_infos, node) { cJSON *itemLocal = OpenAPI_user_data_congestion_info_convertToJSON(node->data); if (itemLocal == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [user_data_cong_infos]"); goto end; } cJSON_AddItemToArray(user_data_cong_infosList, itemLocal); } } if (event_notification->abnor_behavrs) { cJSON *abnor_behavrsList = cJSON_AddArrayToObject(item, "abnorBehavrs"); if (abnor_behavrsList == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [abnor_behavrs]"); goto end; } OpenAPI_list_for_each(event_notification->abnor_behavrs, node) { cJSON *itemLocal = OpenAPI_abnormal_behaviour_convertToJSON(node->data); if (itemLocal == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [abnor_behavrs]"); goto end; } cJSON_AddItemToArray(abnor_behavrsList, itemLocal); } } if (event_notification->nw_perfs) { cJSON *nw_perfsList = cJSON_AddArrayToObject(item, "nwPerfs"); if (nw_perfsList == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [nw_perfs]"); goto end; } OpenAPI_list_for_each(event_notification->nw_perfs, node) { cJSON *itemLocal = OpenAPI_network_perf_info_convertToJSON(node->data); if (itemLocal == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [nw_perfs]"); goto end; } cJSON_AddItemToArray(nw_perfsList, itemLocal); } } if (event_notification->dn_perf_infos) { cJSON *dn_perf_infosList = cJSON_AddArrayToObject(item, "dnPerfInfos"); if (dn_perf_infosList == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [dn_perf_infos]"); goto end; } OpenAPI_list_for_each(event_notification->dn_perf_infos, node) { cJSON *itemLocal = OpenAPI_dn_perf_info_convertToJSON(node->data); if (itemLocal == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [dn_perf_infos]"); goto end; } cJSON_AddItemToArray(dn_perf_infosList, itemLocal); } } if (event_notification->disper_infos) { cJSON *disper_infosList = cJSON_AddArrayToObject(item, "disperInfos"); if (disper_infosList == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [disper_infos]"); goto end; } OpenAPI_list_for_each(event_notification->disper_infos, node) { cJSON *itemLocal = OpenAPI_dispersion_info_convertToJSON(node->data); if (itemLocal == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [disper_infos]"); goto end; } cJSON_AddItemToArray(disper_infosList, itemLocal); } } if (event_notification->red_trans_infos) { cJSON *red_trans_infosList = cJSON_AddArrayToObject(item, "redTransInfos"); if (red_trans_infosList == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [red_trans_infos]"); goto end; } OpenAPI_list_for_each(event_notification->red_trans_infos, node) { cJSON *itemLocal = OpenAPI_redundant_transmission_exp_info_convertToJSON(node->data); if (itemLocal == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [red_trans_infos]"); goto end; } cJSON_AddItemToArray(red_trans_infosList, itemLocal); } } if (event_notification->wlan_infos) { cJSON *wlan_infosList = cJSON_AddArrayToObject(item, "wlanInfos"); if (wlan_infosList == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [wlan_infos]"); goto end; } OpenAPI_list_for_each(event_notification->wlan_infos, node) { cJSON *itemLocal = OpenAPI_wlan_performance_info_convertToJSON(node->data); if (itemLocal == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [wlan_infos]"); goto end; } cJSON_AddItemToArray(wlan_infosList, itemLocal); } } if (event_notification->smcc_exps) { cJSON *smcc_expsList = cJSON_AddArrayToObject(item, "smccExps"); if (smcc_expsList == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [smcc_exps]"); goto end; } OpenAPI_list_for_each(event_notification->smcc_exps, node) { cJSON *itemLocal = OpenAPI_smcce_info_convertToJSON(node->data); if (itemLocal == NULL) { ogs_error("OpenAPI_event_notification_convertToJSON() failed [smcc_exps]"); goto end; } cJSON_AddItemToArray(smcc_expsList, itemLocal); } } end: return item; } OpenAPI_event_notification_t *OpenAPI_event_notification_parseFromJSON(cJSON *event_notificationJSON) { OpenAPI_event_notification_t *event_notification_local_var = NULL; OpenAPI_lnode_t *node = NULL; cJSON *event = NULL; OpenAPI_nwdaf_event_t *event_local_nonprim = NULL; cJSON *start = NULL; cJSON *expiry = NULL; cJSON *time_stamp_gen = NULL; cJSON *fail_notify_code = NULL; OpenAPI_nwdaf_failure_code_t *fail_notify_code_local_nonprim = NULL; cJSON *rv_wait_time = NULL; cJSON *ana_meta_info = NULL; OpenAPI_analytics_metadata_info_t *ana_meta_info_local_nonprim = NULL; cJSON *nf_load_level_infos = NULL; OpenAPI_list_t *nf_load_level_infosList = NULL; cJSON *nsi_load_level_infos = NULL; OpenAPI_list_t *nsi_load_level_infosList = NULL; cJSON *slice_load_level_info = NULL; OpenAPI_slice_load_level_information_t *slice_load_level_info_local_nonprim = NULL; cJSON *svc_exps = NULL; OpenAPI_list_t *svc_expsList = NULL; cJSON *qos_sustain_infos = NULL; OpenAPI_list_t *qos_sustain_infosList = NULL; cJSON *ue_comms = NULL; OpenAPI_list_t *ue_commsList = NULL; cJSON *ue_mobs = NULL; OpenAPI_list_t *ue_mobsList = NULL; cJSON *user_data_cong_infos = NULL; OpenAPI_list_t *user_data_cong_infosList = NULL; cJSON *abnor_behavrs = NULL; OpenAPI_list_t *abnor_behavrsList = NULL; cJSON *nw_perfs = NULL; OpenAPI_list_t *nw_perfsList = NULL; cJSON *dn_perf_infos = NULL; OpenAPI_list_t *dn_perf_infosList = NULL; cJSON *disper_infos = NULL; OpenAPI_list_t *disper_infosList = NULL; cJSON *red_trans_infos = NULL; OpenAPI_list_t *red_trans_infosList = NULL; cJSON *wlan_infos = NULL; OpenAPI_list_t *wlan_infosList = NULL; cJSON *smcc_exps = NULL; OpenAPI_list_t *smcc_expsList = NULL; event = cJSON_GetObjectItemCaseSensitive(event_notificationJSON, "event"); if (!event) { ogs_error("OpenAPI_event_notification_parseFromJSON() failed [event]"); goto end; } event_local_nonprim = OpenAPI_nwdaf_event_parseFromJSON(event); if (!event_local_nonprim) { ogs_error("OpenAPI_nwdaf_event_parseFromJSON failed [event]"); goto end; } start = cJSON_GetObjectItemCaseSensitive(event_notificationJSON, "start"); if (start) { if (!cJSON_IsString(start) && !cJSON_IsNull(start)) { ogs_error("OpenAPI_event_notification_parseFromJSON() failed [start]"); goto end; } } expiry = cJSON_GetObjectItemCaseSensitive(event_notificationJSON, "expiry"); if (expiry) { if (!cJSON_IsString(expiry) && !cJSON_IsNull(expiry)) { ogs_error("OpenAPI_event_notification_parseFromJSON() failed [expiry]"); goto end; } } time_stamp_gen = cJSON_GetObjectItemCaseSensitive(event_notificationJSON, "timeStampGen"); if (time_stamp_gen) { if (!cJSON_IsString(time_stamp_gen) && !cJSON_IsNull(time_stamp_gen)) { ogs_error("OpenAPI_event_notification_parseFromJSON() failed [time_stamp_gen]"); goto end; } } fail_notify_code = cJSON_GetObjectItemCaseSensitive(event_notificationJSON, "failNotifyCode"); if (fail_notify_code) { fail_notify_code_local_nonprim = OpenAPI_nwdaf_failure_code_parseFromJSON(fail_notify_code); if (!fail_notify_code_local_nonprim) { ogs_error("OpenAPI_nwdaf_failure_code_parseFromJSON failed [fail_notify_code]"); goto end; } } rv_wait_time = cJSON_GetObjectItemCaseSensitive(event_notificationJSON, "rvWaitTime"); if (rv_wait_time) { if (!cJSON_IsNumber(rv_wait_time)) { ogs_error("OpenAPI_event_notification_parseFromJSON() failed [rv_wait_time]"); goto end; } } ana_meta_info = cJSON_GetObjectItemCaseSensitive(event_notificationJSON, "anaMetaInfo"); if (ana_meta_info) { ana_meta_info_local_nonprim = OpenAPI_analytics_metadata_info_parseFromJSON(ana_meta_info); if (!ana_meta_info_local_nonprim) { ogs_error("OpenAPI_analytics_metadata_info_parseFromJSON failed [ana_meta_info]"); goto end; } } nf_load_level_infos = cJSON_GetObjectItemCaseSensitive(event_notificationJSON, "nfLoadLevelInfos"); if (nf_load_level_infos) { cJSON *nf_load_level_infos_local = NULL; if (!cJSON_IsArray(nf_load_level_infos)) { ogs_error("OpenAPI_event_notification_parseFromJSON() failed [nf_load_level_infos]"); goto end; } nf_load_level_infosList = OpenAPI_list_create(); cJSON_ArrayForEach(nf_load_level_infos_local, nf_load_level_infos) { if (!cJSON_IsObject(nf_load_level_infos_local)) { ogs_error("OpenAPI_event_notification_parseFromJSON() failed [nf_load_level_infos]"); goto end; } OpenAPI_nf_load_level_information_t *nf_load_level_infosItem = OpenAPI_nf_load_level_information_parseFromJSON(nf_load_level_infos_local); if (!nf_load_level_infosItem) { ogs_error("No nf_load_level_infosItem"); goto end; } OpenAPI_list_add(nf_load_level_infosList, nf_load_level_infosItem); } } nsi_load_level_infos = cJSON_GetObjectItemCaseSensitive(event_notificationJSON, "nsiLoadLevelInfos"); if (nsi_load_level_infos) { cJSON *nsi_load_level_infos_local = NULL; if (!cJSON_IsArray(nsi_load_level_infos)) { ogs_error("OpenAPI_event_notification_parseFromJSON() failed [nsi_load_level_infos]"); goto end; } nsi_load_level_infosList = OpenAPI_list_create(); cJSON_ArrayForEach(nsi_load_level_infos_local, nsi_load_level_infos) { if (!cJSON_IsObject(nsi_load_level_infos_local)) { ogs_error("OpenAPI_event_notification_parseFromJSON() failed [nsi_load_level_infos]"); goto end; } OpenAPI_nsi_load_level_info_t *nsi_load_level_infosItem = OpenAPI_nsi_load_level_info_parseFromJSON(nsi_load_level_infos_local); if (!nsi_load_level_infosItem) { ogs_error("No nsi_load_level_infosItem"); goto end; } OpenAPI_list_add(nsi_load_level_infosList, nsi_load_level_infosItem); } } slice_load_level_info = cJSON_GetObjectItemCaseSensitive(event_notificationJSON, "sliceLoadLevelInfo"); if (slice_load_level_info) { slice_load_level_info_local_nonprim = OpenAPI_slice_load_level_information_parseFromJSON(slice_load_level_info); if (!slice_load_level_info_local_nonprim) { ogs_error("OpenAPI_slice_load_level_information_parseFromJSON failed [slice_load_level_info]"); goto end; } } svc_exps = cJSON_GetObjectItemCaseSensitive(event_notificationJSON, "svcExps"); if (svc_exps) { cJSON *svc_exps_local = NULL; if (!cJSON_IsArray(svc_exps)) { ogs_error("OpenAPI_event_notification_parseFromJSON() failed [svc_exps]"); goto end; } svc_expsList = OpenAPI_list_create(); cJSON_ArrayForEach(svc_exps_local, svc_exps) { if (!cJSON_IsObject(svc_exps_local)) { ogs_error("OpenAPI_event_notification_parseFromJSON() failed [svc_exps]"); goto end; } OpenAPI_service_experience_info_t *svc_expsItem = OpenAPI_service_experience_info_parseFromJSON(svc_exps_local); if (!svc_expsItem) { ogs_error("No svc_expsItem"); goto end; } OpenAPI_list_add(svc_expsList, svc_expsItem); } } qos_sustain_infos = cJSON_GetObjectItemCaseSensitive(event_notificationJSON, "qosSustainInfos"); if (qos_sustain_infos) { cJSON *qos_sustain_infos_local = NULL; if (!cJSON_IsArray(qos_sustain_infos)) { ogs_error("OpenAPI_event_notification_parseFromJSON() failed [qos_sustain_infos]"); goto end; } qos_sustain_infosList = OpenAPI_list_create(); cJSON_ArrayForEach(qos_sustain_infos_local, qos_sustain_infos) { if (!cJSON_IsObject(qos_sustain_infos_local)) { ogs_error("OpenAPI_event_notification_parseFromJSON() failed [qos_sustain_infos]"); goto end; } OpenAPI_qos_sustainability_info_t *qos_sustain_infosItem = OpenAPI_qos_sustainability_info_parseFromJSON(qos_sustain_infos_local); if (!qos_sustain_infosItem) { ogs_error("No qos_sustain_infosItem"); goto end; } OpenAPI_list_add(qos_sustain_infosList, qos_sustain_infosItem); } } ue_comms = cJSON_GetObjectItemCaseSensitive(event_notificationJSON, "ueComms"); if (ue_comms) { cJSON *ue_comms_local = NULL; if (!cJSON_IsArray(ue_comms)) { ogs_error("OpenAPI_event_notification_parseFromJSON() failed [ue_comms]"); goto end; } ue_commsList = OpenAPI_list_create(); cJSON_ArrayForEach(ue_comms_local, ue_comms) { if (!cJSON_IsObject(ue_comms_local)) { ogs_error("OpenAPI_event_notification_parseFromJSON() failed [ue_comms]"); goto end; } OpenAPI_ue_communication_t *ue_commsItem = OpenAPI_ue_communication_parseFromJSON(ue_comms_local); if (!ue_commsItem) { ogs_error("No ue_commsItem"); goto end; } OpenAPI_list_add(ue_commsList, ue_commsItem); } } ue_mobs = cJSON_GetObjectItemCaseSensitive(event_notificationJSON, "ueMobs"); if (ue_mobs) { cJSON *ue_mobs_local = NULL; if (!cJSON_IsArray(ue_mobs)) { ogs_error("OpenAPI_event_notification_parseFromJSON() failed [ue_mobs]"); goto end; } ue_mobsList = OpenAPI_list_create(); cJSON_ArrayForEach(ue_mobs_local, ue_mobs) { if (!cJSON_IsObject(ue_mobs_local)) { ogs_error("OpenAPI_event_notification_parseFromJSON() failed [ue_mobs]"); goto end; } OpenAPI_ue_mobility_t *ue_mobsItem = OpenAPI_ue_mobility_parseFromJSON(ue_mobs_local); if (!ue_mobsItem) { ogs_error("No ue_mobsItem"); goto end; } OpenAPI_list_add(ue_mobsList, ue_mobsItem); } } user_data_cong_infos = cJSON_GetObjectItemCaseSensitive(event_notificationJSON, "userDataCongInfos"); if (user_data_cong_infos) { cJSON *user_data_cong_infos_local = NULL; if (!cJSON_IsArray(user_data_cong_infos)) { ogs_error("OpenAPI_event_notification_parseFromJSON() failed [user_data_cong_infos]"); goto end; } user_data_cong_infosList = OpenAPI_list_create(); cJSON_ArrayForEach(user_data_cong_infos_local, user_data_cong_infos) { if (!cJSON_IsObject(user_data_cong_infos_local)) { ogs_error("OpenAPI_event_notification_parseFromJSON() failed [user_data_cong_infos]"); goto end; } OpenAPI_user_data_congestion_info_t *user_data_cong_infosItem = OpenAPI_user_data_congestion_info_parseFromJSON(user_data_cong_infos_local); if (!user_data_cong_infosItem) { ogs_error("No user_data_cong_infosItem"); goto end; } OpenAPI_list_add(user_data_cong_infosList, user_data_cong_infosItem); } } abnor_behavrs = cJSON_GetObjectItemCaseSensitive(event_notificationJSON, "abnorBehavrs"); if (abnor_behavrs) { cJSON *abnor_behavrs_local = NULL; if (!cJSON_IsArray(abnor_behavrs)) { ogs_error("OpenAPI_event_notification_parseFromJSON() failed [abnor_behavrs]"); goto end; } abnor_behavrsList = OpenAPI_list_create(); cJSON_ArrayForEach(abnor_behavrs_local, abnor_behavrs) { if (!cJSON_IsObject(abnor_behavrs_local)) { ogs_error("OpenAPI_event_notification_parseFromJSON() failed [abnor_behavrs]"); goto end; } OpenAPI_abnormal_behaviour_t *abnor_behavrsItem = OpenAPI_abnormal_behaviour_parseFromJSON(abnor_behavrs_local); if (!abnor_behavrsItem) { ogs_error("No abnor_behavrsItem"); goto end; } OpenAPI_list_add(abnor_behavrsList, abnor_behavrsItem); } } nw_perfs = cJSON_GetObjectItemCaseSensitive(event_notificationJSON, "nwPerfs"); if (nw_perfs) { cJSON *nw_perfs_local = NULL; if (!cJSON_IsArray(nw_perfs)) { ogs_error("OpenAPI_event_notification_parseFromJSON() failed [nw_perfs]"); goto end; } nw_perfsList = OpenAPI_list_create(); cJSON_ArrayForEach(nw_perfs_local, nw_perfs) { if (!cJSON_IsObject(nw_perfs_local)) { ogs_error("OpenAPI_event_notification_parseFromJSON() failed [nw_perfs]"); goto end; } OpenAPI_network_perf_info_t *nw_perfsItem = OpenAPI_network_perf_info_parseFromJSON(nw_perfs_local); if (!nw_perfsItem) { ogs_error("No nw_perfsItem"); goto end; } OpenAPI_list_add(nw_perfsList, nw_perfsItem); } } dn_perf_infos = cJSON_GetObjectItemCaseSensitive(event_notificationJSON, "dnPerfInfos"); if (dn_perf_infos) { cJSON *dn_perf_infos_local = NULL; if (!cJSON_IsArray(dn_perf_infos)) { ogs_error("OpenAPI_event_notification_parseFromJSON() failed [dn_perf_infos]"); goto end; } dn_perf_infosList = OpenAPI_list_create(); cJSON_ArrayForEach(dn_perf_infos_local, dn_perf_infos) { if (!cJSON_IsObject(dn_perf_infos_local)) { ogs_error("OpenAPI_event_notification_parseFromJSON() failed [dn_perf_infos]"); goto end; } OpenAPI_dn_perf_info_t *dn_perf_infosItem = OpenAPI_dn_perf_info_parseFromJSON(dn_perf_infos_local); if (!dn_perf_infosItem) { ogs_error("No dn_perf_infosItem"); goto end; } OpenAPI_list_add(dn_perf_infosList, dn_perf_infosItem); } } disper_infos = cJSON_GetObjectItemCaseSensitive(event_notificationJSON, "disperInfos"); if (disper_infos) { cJSON *disper_infos_local = NULL; if (!cJSON_IsArray(disper_infos)) { ogs_error("OpenAPI_event_notification_parseFromJSON() failed [disper_infos]"); goto end; } disper_infosList = OpenAPI_list_create(); cJSON_ArrayForEach(disper_infos_local, disper_infos) { if (!cJSON_IsObject(disper_infos_local)) { ogs_error("OpenAPI_event_notification_parseFromJSON() failed [disper_infos]"); goto end; } OpenAPI_dispersion_info_t *disper_infosItem = OpenAPI_dispersion_info_parseFromJSON(disper_infos_local); if (!disper_infosItem) { ogs_error("No disper_infosItem"); goto end; } OpenAPI_list_add(disper_infosList, disper_infosItem); } } red_trans_infos = cJSON_GetObjectItemCaseSensitive(event_notificationJSON, "redTransInfos"); if (red_trans_infos) { cJSON *red_trans_infos_local = NULL; if (!cJSON_IsArray(red_trans_infos)) { ogs_error("OpenAPI_event_notification_parseFromJSON() failed [red_trans_infos]"); goto end; } red_trans_infosList = OpenAPI_list_create(); cJSON_ArrayForEach(red_trans_infos_local, red_trans_infos) { if (!cJSON_IsObject(red_trans_infos_local)) { ogs_error("OpenAPI_event_notification_parseFromJSON() failed [red_trans_infos]"); goto end; } OpenAPI_redundant_transmission_exp_info_t *red_trans_infosItem = OpenAPI_redundant_transmission_exp_info_parseFromJSON(red_trans_infos_local); if (!red_trans_infosItem) { ogs_error("No red_trans_infosItem"); goto end; } OpenAPI_list_add(red_trans_infosList, red_trans_infosItem); } } wlan_infos = cJSON_GetObjectItemCaseSensitive(event_notificationJSON, "wlanInfos"); if (wlan_infos) { cJSON *wlan_infos_local = NULL; if (!cJSON_IsArray(wlan_infos)) { ogs_error("OpenAPI_event_notification_parseFromJSON() failed [wlan_infos]"); goto end; } wlan_infosList = OpenAPI_list_create(); cJSON_ArrayForEach(wlan_infos_local, wlan_infos) { if (!cJSON_IsObject(wlan_infos_local)) { ogs_error("OpenAPI_event_notification_parseFromJSON() failed [wlan_infos]"); goto end; } OpenAPI_wlan_performance_info_t *wlan_infosItem = OpenAPI_wlan_performance_info_parseFromJSON(wlan_infos_local); if (!wlan_infosItem) { ogs_error("No wlan_infosItem"); goto end; } OpenAPI_list_add(wlan_infosList, wlan_infosItem); } } smcc_exps = cJSON_GetObjectItemCaseSensitive(event_notificationJSON, "smccExps"); if (smcc_exps) { cJSON *smcc_exps_local = NULL; if (!cJSON_IsArray(smcc_exps)) { ogs_error("OpenAPI_event_notification_parseFromJSON() failed [smcc_exps]"); goto end; } smcc_expsList = OpenAPI_list_create(); cJSON_ArrayForEach(smcc_exps_local, smcc_exps) { if (!cJSON_IsObject(smcc_exps_local)) { ogs_error("OpenAPI_event_notification_parseFromJSON() failed [smcc_exps]"); goto end; } OpenAPI_smcce_info_t *smcc_expsItem = OpenAPI_smcce_info_parseFromJSON(smcc_exps_local); if (!smcc_expsItem) { ogs_error("No smcc_expsItem"); goto end; } OpenAPI_list_add(smcc_expsList, smcc_expsItem); } } event_notification_local_var = OpenAPI_event_notification_create ( event_local_nonprim, start && !cJSON_IsNull(start) ? ogs_strdup(start->valuestring) : NULL, expiry && !cJSON_IsNull(expiry) ? ogs_strdup(expiry->valuestring) : NULL, time_stamp_gen && !cJSON_IsNull(time_stamp_gen) ? ogs_strdup(time_stamp_gen->valuestring) : NULL, fail_notify_code ? fail_notify_code_local_nonprim : NULL, rv_wait_time ? true : false, rv_wait_time ? rv_wait_time->valuedouble : 0, ana_meta_info ? ana_meta_info_local_nonprim : NULL, nf_load_level_infos ? nf_load_level_infosList : NULL, nsi_load_level_infos ? nsi_load_level_infosList : NULL, slice_load_level_info ? slice_load_level_info_local_nonprim : NULL, svc_exps ? svc_expsList : NULL, qos_sustain_infos ? qos_sustain_infosList : NULL, ue_comms ? ue_commsList : NULL, ue_mobs ? ue_mobsList : NULL, user_data_cong_infos ? user_data_cong_infosList : NULL, abnor_behavrs ? abnor_behavrsList : NULL, nw_perfs ? nw_perfsList : NULL, dn_perf_infos ? dn_perf_infosList : NULL, disper_infos ? disper_infosList : NULL, red_trans_infos ? red_trans_infosList : NULL, wlan_infos ? wlan_infosList : NULL, smcc_exps ? smcc_expsList : NULL ); return event_notification_local_var; end: if (event_local_nonprim) { OpenAPI_nwdaf_event_free(event_local_nonprim); event_local_nonprim = NULL; } if (fail_notify_code_local_nonprim) { OpenAPI_nwdaf_failure_code_free(fail_notify_code_local_nonprim); fail_notify_code_local_nonprim = NULL; } if (ana_meta_info_local_nonprim) { OpenAPI_analytics_metadata_info_free(ana_meta_info_local_nonprim); ana_meta_info_local_nonprim = NULL; } if (nf_load_level_infosList) { OpenAPI_list_for_each(nf_load_level_infosList, node) { OpenAPI_nf_load_level_information_free(node->data); } OpenAPI_list_free(nf_load_level_infosList); nf_load_level_infosList = NULL; } if (nsi_load_level_infosList) { OpenAPI_list_for_each(nsi_load_level_infosList, node) { OpenAPI_nsi_load_level_info_free(node->data); } OpenAPI_list_free(nsi_load_level_infosList); nsi_load_level_infosList = NULL; } if (slice_load_level_info_local_nonprim) { OpenAPI_slice_load_level_information_free(slice_load_level_info_local_nonprim); slice_load_level_info_local_nonprim = NULL; } if (svc_expsList) { OpenAPI_list_for_each(svc_expsList, node) { OpenAPI_service_experience_info_free(node->data); } OpenAPI_list_free(svc_expsList); svc_expsList = NULL; } if (qos_sustain_infosList) { OpenAPI_list_for_each(qos_sustain_infosList, node) { OpenAPI_qos_sustainability_info_free(node->data); } OpenAPI_list_free(qos_sustain_infosList); qos_sustain_infosList = NULL; } if (ue_commsList) { OpenAPI_list_for_each(ue_commsList, node) { OpenAPI_ue_communication_free(node->data); } OpenAPI_list_free(ue_commsList); ue_commsList = NULL; } if (ue_mobsList) { OpenAPI_list_for_each(ue_mobsList, node) { OpenAPI_ue_mobility_free(node->data); } OpenAPI_list_free(ue_mobsList); ue_mobsList = NULL; } if (user_data_cong_infosList) { OpenAPI_list_for_each(user_data_cong_infosList, node) { OpenAPI_user_data_congestion_info_free(node->data); } OpenAPI_list_free(user_data_cong_infosList); user_data_cong_infosList = NULL; } if (abnor_behavrsList) { OpenAPI_list_for_each(abnor_behavrsList, node) { OpenAPI_abnormal_behaviour_free(node->data); } OpenAPI_list_free(abnor_behavrsList); abnor_behavrsList = NULL; } if (nw_perfsList) { OpenAPI_list_for_each(nw_perfsList, node) { OpenAPI_network_perf_info_free(node->data); } OpenAPI_list_free(nw_perfsList); nw_perfsList = NULL; } if (dn_perf_infosList) { OpenAPI_list_for_each(dn_perf_infosList, node) { OpenAPI_dn_perf_info_free(node->data); } OpenAPI_list_free(dn_perf_infosList); dn_perf_infosList = NULL; } if (disper_infosList) { OpenAPI_list_for_each(disper_infosList, node) { OpenAPI_dispersion_info_free(node->data); } OpenAPI_list_free(disper_infosList); disper_infosList = NULL; } if (red_trans_infosList) { OpenAPI_list_for_each(red_trans_infosList, node) { OpenAPI_redundant_transmission_exp_info_free(node->data); } OpenAPI_list_free(red_trans_infosList); red_trans_infosList = NULL; } if (wlan_infosList) { OpenAPI_list_for_each(wlan_infosList, node) { OpenAPI_wlan_performance_info_free(node->data); } OpenAPI_list_free(wlan_infosList); wlan_infosList = NULL; } if (smcc_expsList) { OpenAPI_list_for_each(smcc_expsList, node) { OpenAPI_smcce_info_free(node->data); } OpenAPI_list_free(smcc_expsList); smcc_expsList = NULL; } return NULL; } OpenAPI_event_notification_t *OpenAPI_event_notification_copy(OpenAPI_event_notification_t *dst, OpenAPI_event_notification_t *src) { cJSON *item = NULL; char *content = NULL; ogs_assert(src); item = OpenAPI_event_notification_convertToJSON(src); if (!item) { ogs_error("OpenAPI_event_notification_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_event_notification_free(dst); dst = OpenAPI_event_notification_parseFromJSON(item); cJSON_Delete(item); return dst; }