@@ -27,8 +27,8 @@ e2_subscription_manager_impl::handle_subscription_setup(const asn1::e2ap::ric_su
2727 e2_subscription_t subscription = {};
2828 e2_subscribe_reponse_message outcome;
2929 subscription.subscription_info .request_id .ric_requestor_id = msg->ric_request_id .ric_requestor_id ;
30- subscription.subscription_info .ran_function_id = msg->ran_function_id ;
3130 subscription.subscription_info .request_id .ric_instance_id = msg->ric_request_id .ric_instance_id ;
31+ subscription.subscription_info .ran_function_id = msg->ran_function_id ;
3232 e2sm_event_trigger_definition event_trigger_def;
3333
3434 if (supported_ran_functions.count (msg->ran_function_id )) {
@@ -43,15 +43,17 @@ e2_subscription_manager_impl::handle_subscription_setup(const asn1::e2ap::ric_su
4343 outcome.request_id .ric_requestor_id = subscription.subscription_info .request_id .ric_requestor_id ;
4444 outcome.request_id .ric_instance_id = subscription.subscription_info .request_id .ric_instance_id ;
4545 outcome.ran_function_id = subscription.subscription_info .ran_function_id ;
46- subscriptions.insert (std::pair<int , e2_subscription_t >(subscription.subscription_info .request_id .ric_requestor_id ,
47- std::move (subscription)));
46+ subscriptions.insert (std::pair<e2_subscription_key_t , e2_subscription_t >(
47+ std::make_tuple (subscription.subscription_info .request_id .ric_requestor_id ,
48+ subscription.subscription_info .request_id .ric_instance_id ),
49+ std::move (subscription)));
4850 get_subscription_result (msg->ran_function_id ,
4951 outcome,
50- subscriptions[outcome.request_id .ric_requestor_id ],
52+ subscriptions[{ outcome.request_id .ric_requestor_id , outcome. request_id . ric_instance_id } ],
5153 msg->ric_sub_details .ric_action_to_be_setup_list );
5254 if (!outcome.success ) {
5355 logger.error (" Failed to setup subscription" );
54- subscriptions.erase (outcome.request_id .ric_requestor_id );
56+ subscriptions.erase ({ outcome.request_id .ric_requestor_id , outcome. request_id . ric_instance_id } );
5557 }
5658 } else {
5759 outcome.request_id .ric_requestor_id = subscription.subscription_info .request_id .ric_requestor_id ;
@@ -72,7 +74,7 @@ e2_subscription_manager_impl::handle_subscription_delete(const asn1::e2ap::ric_s
7274 outcome.response ->ran_function_id = msg->ran_function_id ;
7375 outcome.response ->ric_request_id = msg->ric_request_id ;
7476 outcome.success = false ;
75- if (subscriptions.count (outcome.request_id .ric_requestor_id )) {
77+ if (subscriptions.count ({ outcome.request_id .ric_requestor_id , outcome. request_id . ric_instance_id } )) {
7678 outcome.success = true ;
7779 } else {
7880 outcome.failure ->cause .set_misc ();
@@ -86,7 +88,8 @@ void e2_subscription_manager_impl::start_subscription(const asn1::e2ap::ric_requ
8688 uint16_t ran_func_id)
8789{
8890 e2sm_interface* e2sm = e2sm_mngr.get_e2sm_interface (ran_func_id);
89- for (auto & action : subscriptions[ric_request_id.ric_requestor_id ].subscription_info .action_list ) {
91+ for (auto & action :
92+ subscriptions[{ric_request_id.ric_requestor_id , ric_request_id.ric_instance_id }].subscription_info .action_list ) {
9093 auto & action_def = action.action_definition ;
9194 if (action.ric_action_type == asn1::e2ap::ric_action_type_e::report) {
9295 action.report_service = e2sm->get_e2sm_report_service (action_def);
@@ -97,18 +100,22 @@ void e2_subscription_manager_impl::start_subscription(const asn1::e2ap::ric_requ
97100 }
98101 }
99102
100- subscriptions[ric_request_id.ric_requestor_id ].indication_task = launch_async<e2_indication_procedure>(
101- notif, ev_mng, subscriptions[ric_request_id.ric_requestor_id ].subscription_info , logger);
103+ subscriptions[{ric_request_id.ric_requestor_id , ric_request_id.ric_instance_id }].indication_task =
104+ launch_async<e2_indication_procedure>(
105+ notif,
106+ ev_mng,
107+ subscriptions[{ric_request_id.ric_requestor_id , ric_request_id.ric_instance_id }].subscription_info ,
108+ logger);
102109}
103110
104111void e2_subscription_manager_impl::stop_subscription (const asn1::e2ap::ric_request_id_s& ric_request_id,
105112 e2_event_manager& ev_mng,
106113 const asn1::e2ap::ric_sub_delete_request_s& msg)
107114{
108- if (subscriptions.count (ric_request_id.ric_requestor_id )) {
109- ev_mng.sub_del_reqs [ric_request_id.ric_requestor_id ]->set (msg);
110- subscriptions[ric_request_id.ric_requestor_id ].indication_task .await_ready ();
111- subscriptions.erase (ric_request_id.ric_requestor_id );
115+ if (subscriptions.count ({ ric_request_id.ric_requestor_id , ric_request_id. ric_instance_id } )) {
116+ ev_mng.sub_del_reqs [{ ric_request_id.ric_requestor_id , ric_request_id. ric_instance_id } ]->set (msg);
117+ subscriptions[{ ric_request_id.ric_requestor_id , ric_request_id. ric_instance_id } ].indication_task .await_ready ();
118+ subscriptions.erase ({ ric_request_id.ric_requestor_id , ric_request_id. ric_instance_id } );
112119 } else {
113120 logger.error (" RIC instance ID not found" );
114121 }
@@ -130,8 +137,9 @@ bool e2_subscription_manager_impl::action_supported(const ric_action_to_be_setup
130137 }
131138
132139 if (e2sm->action_supported (action)) {
133- subscriptions[ric_request_id.ric_requestor_id ].subscription_info .action_list .push_back (
134- {std::move (action_def_buf.value ()), action.ric_action_id , action.ric_action_type });
140+ subscriptions[{ric_request_id.ric_requestor_id , ric_request_id.ric_instance_id }]
141+ .subscription_info .action_list .push_back (
142+ {std::move (action_def_buf.value ()), action.ric_action_id , action.ric_action_type });
135143 return true ;
136144 }
137145
0 commit comments