99 */
1010
1111#include " sched_config_manager.h"
12+ #include " ../logging/scheduler_metrics_handler.h"
1213#include " ../logging/scheduler_metrics_ue_configurator.h"
1314#include " srsran/scheduler/config/scheduler_cell_config_validator.h"
1415#include " srsran/scheduler/config/scheduler_ue_config_validator.h"
@@ -57,16 +58,17 @@ void ue_config_delete_event::reset()
5758 }
5859}
5960
60- sched_config_manager::sched_config_manager (const scheduler_config& sched_cfg) :
61+ sched_config_manager::sched_config_manager (const scheduler_config& sched_cfg,
62+ scheduler_metrics_handler& metrics_handler_) :
6163 expert_params(sched_cfg.expert_params),
64+ metrics_handler(metrics_handler_),
6265 config_notifier(sched_cfg.config_notifier),
6366 logger(srslog::fetch_basic_logger(" SCHED" ))
6467{
6568 std::fill (ue_to_cell_group_index.begin (), ue_to_cell_group_index.end (), INVALID_DU_CELL_GROUP_INDEX);
6669}
6770
68- const cell_configuration* sched_config_manager::add_cell (const sched_cell_configuration_request_message& msg,
69- sched_metrics_ue_configurator& metrics_handler_)
71+ const cell_configuration* sched_config_manager::add_cell (const sched_cell_configuration_request_message& msg)
7072{
7173 srsran_assert (msg.cell_index < MAX_NOF_DU_CELLS, " cell index={} is not valid" , msg.cell_index );
7274 srsran_assert (not added_cells.contains (msg.cell_index ), " cell={} already exists" , msg.cell_index );
@@ -76,7 +78,9 @@ const cell_configuration* sched_config_manager::add_cell(const sched_cell_config
7678 srsran_assert (ret.has_value (), " Invalid cell configuration request message. Cause: {}" , ret.error ().c_str ());
7779
7880 added_cells.emplace (msg.cell_index , std::make_unique<cell_configuration>(expert_params, msg));
79- cell_metrics.emplace (msg.cell_index , &metrics_handler_);
81+
82+ cell_metrics_handler* cell_metrics = metrics_handler.add_cell (*added_cells[msg.cell_index ]);
83+ srsran_assert (cell_metrics != nullptr , " Unable to create metrics handler" );
8084
8185 return added_cells[msg.cell_index ].get ();
8286}
@@ -189,17 +193,17 @@ void sched_config_manager::handle_ue_config_complete(du_ue_index_t ue_index, std
189193 if (next_cfg != nullptr ) {
190194 // Creation/Reconfig succeeded.
191195
196+ cell_metrics_handler& cell_metrics = metrics_handler.at (next_cfg->pcell_common_cfg ().cell_index );
192197 if (ue_cfg_list[ue_index] == nullptr ) {
193198 // UE creation case.
194- cell_metrics[next_cfg->pcell_common_cfg ().cell_index ]->handle_ue_creation (
195- ue_index,
196- next_cfg->crnti ,
197- next_cfg->pcell_common_cfg ().pci ,
198- next_cfg->pcell_common_cfg ().nof_dl_prbs ,
199- next_cfg->pcell_common_cfg ().nof_slots_per_frame );
199+ cell_metrics.handle_ue_creation (ue_index,
200+ next_cfg->crnti ,
201+ next_cfg->pcell_common_cfg ().pci ,
202+ next_cfg->pcell_common_cfg ().nof_dl_prbs ,
203+ next_cfg->pcell_common_cfg ().nof_slots_per_frame );
200204 } else {
201205 // Reconfiguration case.
202- cell_metrics[next_cfg-> pcell_common_cfg (). cell_index ]-> handle_ue_reconfiguration (ue_index);
206+ cell_metrics. handle_ue_reconfiguration (ue_index);
203207 }
204208
205209 // Stores new UE config and deletes old config.
@@ -227,7 +231,8 @@ void sched_config_manager::handle_ue_delete_complete(du_ue_index_t ue_index)
227231 ue_cfg_list[ue_index].reset ();
228232
229233 // Remove UE from metrics.
230- cell_metrics[pcell_idx]->handle_ue_deletion (ue_index);
234+ cell_metrics_handler& cell_metrics = metrics_handler.at (pcell_idx);
235+ cell_metrics.handle_ue_deletion (ue_index);
231236
232237 // Mark the UE as released.
233238 ue_to_cell_group_index[ue_index].store (INVALID_DU_CELL_GROUP_INDEX, std::memory_order_release);
0 commit comments