@@ -29,6 +29,7 @@ e2_subscription_manager_impl::handle_subscription_setup(const asn1::e2ap::ricsub
2929 e2_subscribe_reponse_message outcome;
3030 subscription.subscription_info .request_id .ric_requestor_id = msg->ri_crequest_id .value .ric_requestor_id ;
3131 subscription.subscription_info .ran_function_id = msg->ra_nfunction_id ->value ;
32+ subscription.subscription_info .request_id .ric_instance_id = msg->ri_crequest_id .value .ric_instance_id ;
3233 e2_sm_kpm_event_trigger_definition_s event_trigger_def;
3334
3435 if (supported_ran_functions.count (msg->ra_nfunction_id .value )) {
@@ -61,6 +62,24 @@ e2_subscription_manager_impl::handle_subscription_setup(const asn1::e2ap::ricsub
6162 return outcome;
6263}
6364
65+ e2_subscribe_delete_response_message
66+ e2_subscription_manager_impl::handle_subscription_delete (const asn1::e2ap::ricsubscription_delete_request_s& msg)
67+ {
68+ e2_subscribe_delete_response_message outcome;
69+ outcome.request_id .ric_requestor_id = msg->ri_crequest_id .value .ric_requestor_id ;
70+ outcome.request_id .ric_instance_id = msg->ri_crequest_id .value .ric_instance_id ;
71+ outcome.response ->ra_nfunction_id .value = msg->ra_nfunction_id .value ;
72+ outcome.response ->ri_crequest_id .value = msg->ri_crequest_id .value ;
73+ outcome.success = false ;
74+ if (subscriptions.count (outcome.request_id .ric_instance_id )) {
75+ outcome.success = true ;
76+ } else {
77+ outcome.failure ->cause ->set_misc ();
78+ logger.error (" RIC instance ID not found" );
79+ }
80+ return outcome;
81+ }
82+
6483void e2_subscription_manager_impl::start_subscription (int ric_instance_id,
6584 e2_event_manager& ev_mng,
6685 uint16_t ran_func_id)
@@ -73,6 +92,18 @@ void e2_subscription_manager_impl::start_subscription(int ric_inst
7392 logger);
7493}
7594
95+ void e2_subscription_manager_impl::stop_subscription (int ric_instance_id,
96+ e2_event_manager& ev_mng,
97+ const asn1::e2ap::ricsubscription_delete_request_s& msg)
98+ {
99+ if (subscriptions.count (ric_instance_id)) {
100+ ev_mng.sub_del_reqs [ric_instance_id]->set (msg);
101+ subscriptions[ric_instance_id].indication_task .await_ready ();
102+ subscriptions.erase (ric_instance_id);
103+ } else {
104+ logger.error (" RIC instance ID not found" );
105+ }
106+ }
76107bool e2_subscription_manager_impl::action_supported (const ri_caction_to_be_setup_item_s& action,
77108 uint16_t ran_func_id,
78109 uint32_t ric_instance_id)
0 commit comments