/src/ocudu/lib/pdcp/pdcp_metrics_aggregator.h
Line | Count | Source |
1 | | // SPDX-FileCopyrightText: Copyright (C) 2021-2026 Software Radio Systems Limited |
2 | | // SPDX-License-Identifier: BSD-3-Clause-Open-MPI |
3 | | // Portions of this file may implement 3GPP specifications, which may be subject to additional licensing requirements. |
4 | | |
5 | | #pragma once |
6 | | |
7 | | #include "pdcp_bearer_logger.h" |
8 | | #include "ocudu/pdcp/pdcp_metrics.h" |
9 | | #include "ocudu/pdcp/pdcp_rx_metrics.h" |
10 | | #include "ocudu/pdcp/pdcp_tx_metrics.h" |
11 | | #include "ocudu/support/executors/task_executor.h" |
12 | | #include "ocudu/support/timers.h" |
13 | | |
14 | | namespace ocudu { |
15 | | class pdcp_metrics_aggregator |
16 | | { |
17 | | public: |
18 | | pdcp_metrics_aggregator(uint32_t ue_index_, |
19 | | rb_id_t rb_id_, |
20 | | timer_duration metrics_period_, |
21 | | pdcp_metrics_notifier* pdcp_metrics_notif_, |
22 | | task_executor& ue_executor_, |
23 | | bool report_tx_rx_in_same_report_ = true); |
24 | | |
25 | | void push_tx_metrics(const pdcp_tx_metrics_container& m_tx_); |
26 | | |
27 | | void push_rx_metrics(const pdcp_rx_metrics_container& m_rx_); |
28 | | |
29 | 0 | const timer_duration& get_metrics_period() const { return metrics_period; } |
30 | | |
31 | | private: |
32 | | void push_report(); |
33 | | |
34 | | void push_tx_metrics_impl(const pdcp_tx_metrics_container& m_tx_); |
35 | | void push_rx_metrics_impl(const pdcp_rx_metrics_container& m_rx_); |
36 | | |
37 | | const bool report_tx_rx_in_same_report; |
38 | | uint32_t ue_index; |
39 | | rb_id_t rb_id; |
40 | | pdcp_rx_metrics_container m_rx; |
41 | | pdcp_tx_metrics_container m_tx; |
42 | | timer_duration metrics_period; |
43 | | pdcp_metrics_notifier* pdcp_metrics_notif; |
44 | | task_executor& ue_executor; |
45 | | pdcp_bearer_logger logger; |
46 | | }; |
47 | | } // namespace ocudu |