Skip to content

Commit f527eae

Browse files
rlc: refactor queue formatter...
...in preparation of rendering of log messages in backend. (Otherwise the queue would need to be copied to the backend)
1 parent 2c4bdab commit f527eae

File tree

4 files changed

+30
-13
lines changed

4 files changed

+30
-13
lines changed

lib/rlc/rlc_sdu_queue_lockfree.h

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,19 @@ class rlc_sdu_queue_lockfree
199199
/// \return The number of buffered SDU bytes that are not marked as discarded.
200200
uint32_t size_bytes() const { return n_bytes.load(std::memory_order_relaxed); }
201201

202+
/// \brief Container for return value of \c get_state function.
203+
struct state {
204+
uint32_t n_sdus; ///< Number of buffered SDUs that are not marked as discarded.
205+
uint32_t n_bytes; ///< Number of buffered bytes that are not marked as discarded.
206+
};
207+
208+
/// \brief Reads the state of the queue, i.e. number of buffered SDUs and bytes that are not marked as discarded.
209+
///
210+
/// This function may be called by any thread.
211+
///
212+
/// \return Current state of the queue.
213+
state get_state() const { return {size_sdus(), size_bytes()}; }
214+
202215
/// \brief Checks if the internal queue is empty.
203216
///
204217
/// This function may be called by any thread.
@@ -281,18 +294,18 @@ class rlc_sdu_queue_lockfree
281294

282295
namespace fmt {
283296
template <>
284-
struct formatter<srsran::rlc_sdu_queue_lockfree> {
297+
struct formatter<srsran::rlc_sdu_queue_lockfree::state> {
285298
template <typename ParseContext>
286299
auto parse(ParseContext& ctx) -> decltype(ctx.begin())
287300
{
288301
return ctx.begin();
289302
}
290303

291304
template <typename FormatContext>
292-
auto format(const srsran::rlc_sdu_queue_lockfree& q, FormatContext& ctx)
305+
auto format(const srsran::rlc_sdu_queue_lockfree::state& state, FormatContext& ctx)
293306
-> decltype(std::declval<FormatContext>().out())
294307
{
295-
return format_to(ctx.out(), "queued_sdus={} queued_bytes={}", q.size_sdus(), q.size_bytes());
308+
return format_to(ctx.out(), "queued_sdus={} queued_bytes={}", state.n_sdus, state.n_bytes);
296309
}
297310
};
298311

lib/rlc/rlc_tx_am_entity.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,16 @@ void rlc_tx_am_entity::handle_sdu(rlc_sdu sdu)
6767
sdu.time_of_arrival = std::chrono::high_resolution_clock::now();
6868
size_t sdu_length = sdu.buf.length();
6969
if (sdu_queue.write(sdu)) {
70-
logger.log_info(
71-
sdu.buf.begin(), sdu.buf.end(), "TX SDU. sdu_len={} pdcp_sn={} {}", sdu.buf.length(), sdu.pdcp_sn, sdu_queue);
70+
logger.log_info(sdu.buf.begin(),
71+
sdu.buf.end(),
72+
"TX SDU. sdu_len={} pdcp_sn={} {}",
73+
sdu.buf.length(),
74+
sdu.pdcp_sn,
75+
sdu_queue.get_state());
7276
metrics.metrics_add_sdus(1, sdu_length);
7377
handle_changed_buffer_state();
7478
} else {
75-
logger.log_warning("Dropped SDU. sdu_len={} pdcp_sn={} {}", sdu_length, sdu.pdcp_sn, sdu_queue);
79+
logger.log_warning("Dropped SDU. sdu_len={} pdcp_sn={} {}", sdu_length, sdu.pdcp_sn, sdu_queue.get_state());
7680
metrics.metrics_add_lost_sdus(1);
7781
}
7882
}
@@ -180,7 +184,7 @@ size_t rlc_tx_am_entity::build_new_pdu(span<uint8_t> rlc_pdu_buf)
180184

181185
// Read new SDU from TX queue
182186
rlc_sdu sdu;
183-
logger.log_debug("Reading SDU from sdu_queue. {}", sdu_queue);
187+
logger.log_debug("Reading SDU from sdu_queue. {}", sdu_queue.get_state());
184188
if (not sdu_queue.read(sdu)) {
185189
logger.log_debug("SDU queue empty. grant_len={}", grant_len);
186190
return 0;

lib/rlc/rlc_tx_tm_entity.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,11 @@ void rlc_tx_tm_entity::handle_sdu(rlc_sdu sdu_)
3737
{
3838
size_t sdu_len = sdu_.buf.length();
3939
if (sdu_queue.write(sdu_)) {
40-
logger.log_info(sdu_.buf.begin(), sdu_.buf.end(), "TX SDU. sdu_len={} {}", sdu_len, sdu_queue);
40+
logger.log_info(sdu_.buf.begin(), sdu_.buf.end(), "TX SDU. sdu_len={} {}", sdu_len, sdu_queue.get_state());
4141
metrics.metrics_add_sdus(1, sdu_len);
4242
handle_changed_buffer_state();
4343
} else {
44-
logger.log_info("Dropped SDU. sdu_len={} {}", sdu_len, sdu_queue);
44+
logger.log_info("Dropped SDU. sdu_len={} {}", sdu_len, sdu_queue.get_state());
4545
metrics.metrics_add_lost_sdus(1);
4646
}
4747
}
@@ -61,7 +61,7 @@ size_t rlc_tx_tm_entity::pull_pdu(span<uint8_t> mac_sdu_buf)
6161

6262
// Get a new SDU, if none is currently being transmitted
6363
if (sdu.buf.empty()) {
64-
logger.log_debug("Reading SDU from sdu_queue. {}", sdu_queue);
64+
logger.log_debug("Reading SDU from sdu_queue. {}", sdu_queue.get_state());
6565
if (not sdu_queue.read(sdu)) {
6666
logger.log_debug("SDU queue empty. grant_len={}", grant_len);
6767
return 0;

lib/rlc/rlc_tx_um_entity.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,11 @@ void rlc_tx_um_entity::handle_sdu(rlc_sdu sdu_)
5050
"TX SDU. sdu_len={} pdcp_sn={} {}",
5151
sdu_.buf.length(),
5252
sdu_.pdcp_sn,
53-
sdu_queue);
53+
sdu_queue.get_state());
5454
metrics.metrics_add_sdus(1, sdu_length);
5555
handle_changed_buffer_state();
5656
} else {
57-
logger.log_info("Dropped SDU. sdu_len={} pdcp_sn={} {}", sdu_length, sdu_.pdcp_sn, sdu_queue);
57+
logger.log_info("Dropped SDU. sdu_len={} pdcp_sn={} {}", sdu_length, sdu_.pdcp_sn, sdu_queue.get_state());
5858
metrics.metrics_add_lost_sdus(1);
5959
}
6060
}
@@ -92,7 +92,7 @@ size_t rlc_tx_um_entity::pull_pdu(span<uint8_t> mac_sdu_buf)
9292
// Get a new SDU, if none is currently being transmitted
9393
if (sdu.buf.empty()) {
9494
srsran_sanity_check(next_so == 0, "New TX SDU, but next_so={} > 0.", next_so);
95-
logger.log_debug("Reading SDU from sdu_queue. {}", sdu_queue);
95+
logger.log_debug("Reading SDU from sdu_queue. {}", sdu_queue.get_state());
9696
if (not sdu_queue.read(sdu)) {
9797
logger.log_debug("SDU queue empty. grant_len={}", grant_len);
9898
return {};

0 commit comments

Comments
 (0)