From 751aaa6218f0f900e606f3823719a60c06b657ff Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Wed, 10 Apr 2024 11:49:14 -0400 Subject: [PATCH] src.ctf.lttng-live: make lttng_live_msg_iter::sessions an std::vector Change-Id: I1c6f23eb1cad89d431699b07ce68673ae9f19963 Signed-off-by: Simon Marchi Reviewed-on: https://review.lttng.org/c/babeltrace/+/8468 Reviewed-by: Philippe Proulx Reviewed-on: https://review.lttng.org/c/babeltrace/+/12383 Tested-by: jenkins --- src/plugins/ctf/lttng-live/lttng-live.cpp | 53 +++++-------------- src/plugins/ctf/lttng-live/lttng-live.hpp | 3 +- .../ctf/lttng-live/viewer-connection.cpp | 6 +-- 3 files changed, 15 insertions(+), 47 deletions(-) diff --git a/src/plugins/ctf/lttng-live/lttng-live.cpp b/src/plugins/ctf/lttng-live/lttng-live.cpp index d1307bf8..1fb0be8a 100644 --- a/src/plugins/ctf/lttng-live/lttng-live.cpp +++ b/src/plugins/ctf/lttng-live/lttng-live.cpp @@ -134,7 +134,7 @@ int lttng_live_add_session(struct lttng_live_msg_iter *lttng_live_msg_iter, uint session->hostname = hostname; session->session_name = session_name; - g_ptr_array_add(lttng_live_msg_iter->sessions, session.release()); + lttng_live_msg_iter->sessions.emplace_back(std::move(session)); return 0; } @@ -156,21 +156,12 @@ lttng_live_session::~lttng_live_session() } } -static void lttng_live_destroy_session(struct lttng_live_session *session) -{ - delete session; -} - static void lttng_live_msg_iter_destroy(struct lttng_live_msg_iter *lttng_live_msg_iter) { if (!lttng_live_msg_iter) { goto end; } - if (lttng_live_msg_iter->sessions) { - g_ptr_array_free(lttng_live_msg_iter->sessions, TRUE); - } - if (lttng_live_msg_iter->viewer_connection) { live_viewer_connection_destroy(lttng_live_msg_iter->viewer_connection); } @@ -409,11 +400,7 @@ end: static void lttng_live_force_new_streams_and_metadata(struct lttng_live_msg_iter *lttng_live_msg_iter) { - uint64_t session_idx; - - for (session_idx = 0; session_idx < lttng_live_msg_iter->sessions->len; session_idx++) { - struct lttng_live_session *session = - (lttng_live_session *) g_ptr_array_index(lttng_live_msg_iter->sessions, session_idx); + for (const auto& session : lttng_live_msg_iter->sessions) { BT_CPPLOGD_SPEC(lttng_live_msg_iter->logger, "Force marking session as needing new streams: " "session-id={}", @@ -437,8 +424,7 @@ lttng_live_iterator_handle_new_streams_and_metadata(struct lttng_live_msg_iter * { enum lttng_live_iterator_status status; enum lttng_live_viewer_status viewer_status; - uint64_t session_idx = 0, nr_sessions_opened = 0; - struct lttng_live_session *session; + uint64_t nr_sessions_opened = 0; enum session_not_found_action sess_not_found_act = lttng_live_msg_iter->lttng_live_comp->params.sess_not_found_act; @@ -452,7 +438,7 @@ lttng_live_iterator_handle_new_streams_and_metadata(struct lttng_live_msg_iter * * need to query for new sessions even though we have sessions * currently ongoing. */ - if (lttng_live_msg_iter->sessions->len == 0) { + if (lttng_live_msg_iter->sessions.empty()) { if (sess_not_found_act != SESSION_NOT_FOUND_ACTION_CONTINUE) { BT_CPPLOGD_SPEC( lttng_live_msg_iter->logger, @@ -483,10 +469,8 @@ lttng_live_iterator_handle_new_streams_and_metadata(struct lttng_live_msg_iter * } } - for (session_idx = 0; session_idx < lttng_live_msg_iter->sessions->len; session_idx++) { - session = - (lttng_live_session *) g_ptr_array_index(lttng_live_msg_iter->sessions, session_idx); - status = lttng_live_get_session(lttng_live_msg_iter, session); + for (const auto& session : lttng_live_msg_iter->sessions) { + status = lttng_live_get_session(lttng_live_msg_iter, session.get()); switch (status) { case LTTNG_LIVE_ITERATOR_STATUS_OK: case LTTNG_LIVE_ITERATOR_STATUS_END: @@ -645,12 +629,8 @@ static enum lttng_live_iterator_status lttng_live_iterator_next_handle_one_activ { enum lttng_live_iterator_status ret = LTTNG_LIVE_ITERATOR_STATUS_OK; enum ctf_msg_iter_status status; - uint64_t session_idx; - - for (session_idx = 0; session_idx < lttng_live_msg_iter->sessions->len; session_idx++) { - struct lttng_live_session *session = - (lttng_live_session *) g_ptr_array_index(lttng_live_msg_iter->sessions, session_idx); + for (const auto& session : lttng_live_msg_iter->sessions) { if (session->new_streams_needed) { BT_CPPLOGD_SPEC(lttng_live_msg_iter->logger, "Need an update for streams: " @@ -1361,7 +1341,6 @@ lttng_live_msg_iter_next(bt_self_message_iterator *self_msg_it, bt_message_array (struct lttng_live_msg_iter *) bt_self_message_iterator_get_data(self_msg_it); struct lttng_live_component *lttng_live = lttng_live_msg_iter->lttng_live_comp; enum lttng_live_iterator_status stream_iter_status; - uint64_t session_idx; *count = 0; @@ -1394,7 +1373,7 @@ lttng_live_msg_iter_next(bt_self_message_iterator *self_msg_it, bt_message_array * the user, session count will be 0. In this case, we return status * end to return gracefully. */ - if (lttng_live_msg_iter->sessions->len == 0) { + if (lttng_live_msg_iter->sessions.empty()) { if (lttng_live->params.sess_not_found_act != SESSION_NOT_FOUND_ACTION_CONTINUE) { status = BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_END; goto end; @@ -1448,11 +1427,9 @@ lttng_live_msg_iter_next(bt_self_message_iterator *self_msg_it, bt_message_array *candidate_stream_iter = NULL; int64_t youngest_msg_ts_ns = INT64_MAX; - BT_ASSERT_DBG(lttng_live_msg_iter->sessions); - session_idx = 0; - while (session_idx < lttng_live_msg_iter->sessions->len) { - struct lttng_live_session *session = (lttng_live_session *) g_ptr_array_index( - lttng_live_msg_iter->sessions, session_idx); + uint64_t session_idx = 0; + while (session_idx < lttng_live_msg_iter->sessions.size()) { + lttng_live_session *session = lttng_live_msg_iter->sessions[session_idx].get(); /* Find the best candidate message to send downstream. */ stream_iter_status = next_stream_iterator_for_session(lttng_live_msg_iter, session, @@ -1472,7 +1449,7 @@ lttng_live_msg_iter_next(bt_self_message_iterator *self_msg_it, bt_message_array * replaces the the removed element with * the array's last element. */ - g_ptr_array_remove_index_fast(lttng_live_msg_iter->sessions, session_idx); + bt2c::vectorFastRemove(lttng_live_msg_iter->sessions, session_idx); } else { session_idx++; } @@ -1617,10 +1594,6 @@ lttng_live_msg_iter_create(struct lttng_live_component *lttng_live_comp, msg_iter->last_msg_ts_ns = INT64_MIN; msg_iter->was_interrupted = false; - msg_iter->sessions = - g_ptr_array_new_with_free_func((GDestroyNotify) lttng_live_destroy_session); - BT_ASSERT(msg_iter->sessions); - return msg_iter; } @@ -1687,7 +1660,7 @@ lttng_live_msg_iter_init(bt_self_message_iterator *self_msg_it, goto error; } - if (lttng_live_msg_iter->sessions->len == 0) { + if (lttng_live_msg_iter->sessions.empty()) { switch (lttng_live->params.sess_not_found_act) { case SESSION_NOT_FOUND_ACTION_CONTINUE: BT_CPPLOGI_SPEC( diff --git a/src/plugins/ctf/lttng-live/lttng-live.hpp b/src/plugins/ctf/lttng-live/lttng-live.hpp index 72b040a8..63011002 100644 --- a/src/plugins/ctf/lttng-live/lttng-live.hpp +++ b/src/plugins/ctf/lttng-live/lttng-live.hpp @@ -297,8 +297,7 @@ struct lttng_live_msg_iter /* Owned by this. */ struct live_viewer_connection *viewer_connection = nullptr; - /* Array of pointers to struct lttng_live_session. */ - GPtrArray *sessions = nullptr; + std::vector sessions; /* Number of live stream iterator this message iterator has.*/ uint64_t active_stream_iter = 0; diff --git a/src/plugins/ctf/lttng-live/viewer-connection.cpp b/src/plugins/ctf/lttng-live/viewer-connection.cpp index a4fa768c..4a71508e 100644 --- a/src/plugins/ctf/lttng-live/viewer-connection.cpp +++ b/src/plugins/ctf/lttng-live/viewer-connection.cpp @@ -1216,11 +1216,7 @@ static void lttng_index_to_packet_index(struct lttng_viewer_index *lindex, static void lttng_live_need_new_streams(struct lttng_live_msg_iter *lttng_live_msg_iter) { - uint64_t session_idx; - - for (session_idx = 0; session_idx < lttng_live_msg_iter->sessions->len; session_idx++) { - struct lttng_live_session *session = - (lttng_live_session *) g_ptr_array_index(lttng_live_msg_iter->sessions, session_idx); + for (const auto& session : lttng_live_msg_iter->sessions) { BT_CPPLOGD_SPEC(lttng_live_msg_iter->logger, "Marking session as needing new streams: " "session-id={}", -- 2.34.1