X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?p=sim%2Fo1-interface.git;a=blobdiff_plain;f=ntsimulator%2Fntsim-ng%2Ffeatures%2Fmanual_notification%2Fmanual_notification.c;h=e768c73c67a0e50b04c3166c0475de0fa2cddc54;hp=e76fa6105ddd8a560a9dff2c5f116ca65a0e0c15;hb=3bbf9d8a3c81afebcffb2b926cef219336dd53d6;hpb=312a154cc4d60a09596fba8fd1259345e048cdc2 diff --git a/ntsimulator/ntsim-ng/features/manual_notification/manual_notification.c b/ntsimulator/ntsim-ng/features/manual_notification/manual_notification.c index e76fa61..e768c73 100644 --- a/ntsimulator/ntsim-ng/features/manual_notification/manual_notification.c +++ b/ntsimulator/ntsim-ng/features/manual_notification/manual_notification.c @@ -35,19 +35,44 @@ #define MANUAL_NOTIFICATION_RPC_SCHEMA_XPATH "/nts-network-function:invoke-notification" static int manual_notification_pm_cb(sr_session_ctx_t *session, const char *path, const sr_val_t *input, const size_t input_cnt, sr_event_t event, uint32_t request_id, sr_val_t **output, size_t *output_cnt, void *private_data); +static sr_subscription_ctx_t *manual_notification_subscription = 0; + +int manual_notification_feature_get_status(void) { + return (manual_notification_subscription != 0); +} int manual_notification_feature_start(sr_session_ctx_t *current_session) { assert_session(); + assert(current_session); - int rc = sr_rpc_subscribe(current_session, MANUAL_NOTIFICATION_RPC_SCHEMA_XPATH, manual_notification_pm_cb, 0, 0, SR_SUBSCR_CTX_REUSE, &session_subscription); - if(rc != SR_ERR_OK) { - log_error("error from sr_rpc_subscribe: %s\n", sr_strerror(rc)); - return NTS_ERR_FAILED; + if(manual_notification_subscription == 0) { + int rc = sr_rpc_subscribe(current_session, MANUAL_NOTIFICATION_RPC_SCHEMA_XPATH, manual_notification_pm_cb, 0, 0, SR_SUBSCR_CTX_REUSE, &manual_notification_subscription); + if(rc != SR_ERR_OK) { + log_error("error from sr_rpc_subscribe: %s\n", sr_strerror(rc)); + return NTS_ERR_FAILED; + } + } + + return NTS_ERR_OK; +} + +int manual_notification_feature_stop(void) { + assert_session(); + + if(manual_notification_subscription) { + int rc = sr_unsubscribe(manual_notification_subscription); + if(rc != SR_ERR_OK) { + log_error("error from sr_rpc_subscribe: %s\n", sr_strerror(rc)); + return NTS_ERR_FAILED; + } + + manual_notification_subscription = 0; } return NTS_ERR_OK; } + static int manual_notification_pm_cb(sr_session_ctx_t *session, const char *path, const sr_val_t *input, const size_t input_cnt, sr_event_t event, uint32_t request_id, sr_val_t **output, size_t *output_cnt, void *private_data) { int rc;