Signed-off-by: Simon Marchi <simon.marchi@efficios.com>
Change-Id: I3b8ec1e61929fad1e024955dcfc6708cb125b5c9
Reviewed-on: https://review.lttng.org/c/babeltrace/+/8463
Reviewed-by: Philippe Proulx <eeppeliteloop@gmail.com>
Reviewed-on: https://review.lttng.org/c/babeltrace/+/12379
Tested-by: jenkins <jenkins@lttng.org>
bt_self_message_iterator *self_msg_iter)
{
struct lttng_live_component *lttng_live = session->lttng_live_msg_iter->lttng_live_comp;
bt_self_message_iterator *self_msg_iter)
{
struct lttng_live_component *lttng_live = session->lttng_live_msg_iter->lttng_live_comp;
if (!session->lazy_stream_msg_init) {
return LTTNG_LIVE_ITERATOR_STATUS_OK;
if (!session->lazy_stream_msg_init) {
return LTTNG_LIVE_ITERATOR_STATUS_OK;
"session-id={}, self-msg-iter-addr={}",
session->id, fmt::ptr(self_msg_iter));
"session-id={}, self-msg-iter-addr={}",
session->id, fmt::ptr(self_msg_iter));
- for (trace_idx = 0; trace_idx < session->traces->len; trace_idx++) {
- struct lttng_live_trace *trace =
- (lttng_live_trace *) g_ptr_array_index(session->traces, trace_idx);
-
+ for (lttng_live_trace::UP& trace : session->traces) {
for (lttng_live_stream_iterator::UP& stream_iter : trace->stream_iterators) {
struct ctf_trace_class *ctf_tc;
for (lttng_live_stream_iterator::UP& stream_iter : trace->stream_iterators) {
struct ctf_trace_class *ctf_tc;
static struct lttng_live_trace *
lttng_live_session_borrow_trace_by_id(struct lttng_live_session *session, uint64_t trace_id)
{
static struct lttng_live_trace *
lttng_live_session_borrow_trace_by_id(struct lttng_live_session *session, uint64_t trace_id)
{
- uint64_t trace_idx;
- struct lttng_live_trace *ret_trace = NULL;
-
- for (trace_idx = 0; trace_idx < session->traces->len; trace_idx++) {
- struct lttng_live_trace *trace =
- (lttng_live_trace *) g_ptr_array_index(session->traces, trace_idx);
+ for (lttng_live_trace::UP& trace : session->traces) {
if (trace->id == trace_id) {
if (trace->id == trace_id) {
- ret_trace = trace;
- goto end;
-end:
- return ret_trace;
-}
-
-static void lttng_live_destroy_trace(struct lttng_live_trace *trace)
-{
- BT_CPPLOGD_SPEC(trace->logger, "Destroying live trace: trace-id={}", trace->id);
-
- delete trace;
}
static struct lttng_live_trace *lttng_live_create_trace(struct lttng_live_session *session,
}
static struct lttng_live_trace *lttng_live_create_trace(struct lttng_live_session *session,
trace->metadata_stream_state = LTTNG_LIVE_METADATA_STREAM_STATE_NEEDED;
const auto ret = trace.get();
trace->metadata_stream_state = LTTNG_LIVE_METADATA_STREAM_STATE_NEEDED;
const auto ret = trace.get();
- g_ptr_array_add(session->traces, trace.release());
+ session->traces.emplace_back(std::move(trace));
lttng_live_session *session = new lttng_live_session {lttng_live_msg_iter->logger};
session->self_comp = lttng_live_msg_iter->self_comp;
session->id = session_id;
lttng_live_session *session = new lttng_live_session {lttng_live_msg_iter->logger};
session->self_comp = lttng_live_msg_iter->self_comp;
session->id = session_id;
- session->traces = g_ptr_array_new_with_free_func((GDestroyNotify) lttng_live_destroy_trace);
- BT_ASSERT(session->traces);
session->lttng_live_msg_iter = lttng_live_msg_iter;
session->new_streams_needed = true;
session->hostname = g_string_new(hostname);
session->lttng_live_msg_iter = lttng_live_msg_iter;
session->new_streams_needed = true;
session->hostname = g_string_new(hostname);
- if (session->traces) {
- g_ptr_array_free(session->traces, TRUE);
- }
-
if (session->hostname) {
g_string_free(session->hostname, TRUE);
}
if (session->hostname) {
g_string_free(session->hostname, TRUE);
}
struct lttng_live_session *session)
{
enum lttng_live_iterator_status status;
struct lttng_live_session *session)
{
enum lttng_live_iterator_status status;
if (!session->attached) {
BT_CPPLOGD_SPEC(lttng_live_msg_iter->logger, "Attach to session: session-id={}",
if (!session->attached) {
BT_CPPLOGD_SPEC(lttng_live_msg_iter->logger, "Attach to session: session-id={}",
"session-id={}, session-name=\"{}\"",
session->id, session->session_name->str);
"session-id={}, session-name=\"{}\"",
session->id, session->session_name->str);
- trace_idx = 0;
- while (trace_idx < session->traces->len) {
- struct lttng_live_trace *trace =
- (lttng_live_trace *) g_ptr_array_index(session->traces, trace_idx);
-
- status = lttng_live_metadata_update(trace);
+ for (lttng_live_trace::UP& trace : session->traces) {
+ status = lttng_live_metadata_update(trace.get());
switch (status) {
case LTTNG_LIVE_ITERATOR_STATUS_END:
case LTTNG_LIVE_ITERATOR_STATUS_OK:
switch (status) {
case LTTNG_LIVE_ITERATOR_STATUS_END:
case LTTNG_LIVE_ITERATOR_STATUS_OK:
break;
case LTTNG_LIVE_ITERATOR_STATUS_CONTINUE:
case LTTNG_LIVE_ITERATOR_STATUS_AGAIN:
break;
case LTTNG_LIVE_ITERATOR_STATUS_CONTINUE:
case LTTNG_LIVE_ITERATOR_STATUS_AGAIN:
static void
lttng_live_force_new_streams_and_metadata(struct lttng_live_msg_iter *lttng_live_msg_iter)
{
static void
lttng_live_force_new_streams_and_metadata(struct lttng_live_msg_iter *lttng_live_msg_iter)
{
- uint64_t session_idx, trace_idx;
for (session_idx = 0; session_idx < lttng_live_msg_iter->sessions->len; session_idx++) {
struct lttng_live_session *session =
for (session_idx = 0; session_idx < lttng_live_msg_iter->sessions->len; session_idx++) {
struct lttng_live_session *session =
"session-id={}",
session->id);
session->new_streams_needed = true;
"session-id={}",
session->id);
session->new_streams_needed = true;
- for (trace_idx = 0; trace_idx < session->traces->len; trace_idx++) {
- struct lttng_live_trace *trace =
- (lttng_live_trace *) g_ptr_array_index(session->traces, trace_idx);
+ for (lttng_live_trace::UP& trace : session->traces) {
BT_CPPLOGD_SPEC(lttng_live_msg_iter->logger,
"Force marking trace metadata state as needing an update: "
"session-id={}, trace-id={}",
BT_CPPLOGD_SPEC(lttng_live_msg_iter->logger,
"Force marking trace metadata state as needing an update: "
"session-id={}, trace-id={}",
{
enum lttng_live_iterator_status ret = LTTNG_LIVE_ITERATOR_STATUS_OK;
enum ctf_msg_iter_status status;
{
enum lttng_live_iterator_status ret = LTTNG_LIVE_ITERATOR_STATUS_OK;
enum ctf_msg_iter_status status;
- uint64_t session_idx, trace_idx;
for (session_idx = 0; session_idx < lttng_live_msg_iter->sessions->len; session_idx++) {
struct lttng_live_session *session =
for (session_idx = 0; session_idx < lttng_live_msg_iter->sessions->len; session_idx++) {
struct lttng_live_session *session =
ret = LTTNG_LIVE_ITERATOR_STATUS_CONTINUE;
goto end;
}
ret = LTTNG_LIVE_ITERATOR_STATUS_CONTINUE;
goto end;
}
- for (trace_idx = 0; trace_idx < session->traces->len; trace_idx++) {
- struct lttng_live_trace *trace =
- (lttng_live_trace *) g_ptr_array_index(session->traces, trace_idx);
+ for (lttng_live_trace::UP& trace : session->traces) {
if (trace->metadata_stream_state == LTTNG_LIVE_METADATA_STREAM_STATE_NEEDED) {
BT_CPPLOGD_SPEC(lttng_live_msg_iter->logger,
"Need an update for metadata stream: "
if (trace->metadata_stream_state == LTTNG_LIVE_METADATA_STREAM_STATE_NEEDED) {
BT_CPPLOGD_SPEC(lttng_live_msg_iter->logger,
"Need an update for metadata stream: "
- BT_ASSERT_DBG(session->traces);
-
- while (trace_idx < session->traces->len) {
+ while (trace_idx < session->traces.size()) {
bool trace_is_ended = false;
struct lttng_live_stream_iterator *stream_iter;
bool trace_is_ended = false;
struct lttng_live_stream_iterator *stream_iter;
- struct lttng_live_trace *trace =
- (lttng_live_trace *) g_ptr_array_index(session->traces, trace_idx);
+ lttng_live_trace *trace = session->traces[trace_idx].get();
stream_iter_status =
next_stream_iterator_for_trace(lttng_live_msg_iter, trace, &stream_iter);
stream_iter_status =
next_stream_iterator_for_trace(lttng_live_msg_iter, trace, &stream_iter);
} else {
/*
* trace_idx is not incremented since
} else {
/*
* trace_idx is not incremented since
- * g_ptr_array_remove_index_fast replaces the
+ * vectorFastRemove replaces the
* element at trace_idx with the array's last element.
*/
* element at trace_idx with the array's last element.
*/
- g_ptr_array_remove_index_fast(session->traces, trace_idx);
+ bt2c::vectorFastRemove(session->traces, trace_idx);
}
}
if (youngest_candidate_stream_iter) {
}
}
if (youngest_candidate_stream_iter) {
*
* In either cases, we return END.
*/
*
* In either cases, we return END.
*/
- BT_ASSERT(session->traces->len == 0);
+ BT_ASSERT(session->traces.empty());
stream_iter_status = LTTNG_LIVE_ITERATOR_STATUS_END;
}
end:
stream_iter_status = LTTNG_LIVE_ITERATOR_STATUS_END;
}
end:
* - All live stream iterators have ENDed.
*/
if (stream_iter_status == LTTNG_LIVE_ITERATOR_STATUS_END) {
* - All live stream iterators have ENDed.
*/
if (stream_iter_status == LTTNG_LIVE_ITERATOR_STATUS_END) {
- if (session->closed && session->traces->len == 0) {
+ if (session->closed && session->traces.empty()) {
/*
* Remove the session from the list.
* session_idx is not modified since
/*
* Remove the session from the list.
* session_idx is not modified since
- /* Array of pointers to struct lttng_live_trace. */
- GPtrArray *traces = nullptr;
+ std::vector<lttng_live_trace::UP> traces;
bool attached = false;
bool new_streams_needed = false;
bool attached = false;
bool new_streams_needed = false;