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;
}
}
}
-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);
}
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={}",
{
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;
* 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,
}
}
- 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:
{
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: "
(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;
* 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;
*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,
* 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++;
}
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;
}
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(