Use the C++ wrapper to hold the reference to the trace.
Signed-off-by: Simon Marchi <simon.marchi@efficios.com>
Change-Id: Iadfe9add10e5a6e3112cc0626b2ece868a013b40
Reviewed-on: https://review.lttng.org/c/babeltrace/+/8416
Reviewed-by: Philippe Proulx <eeppeliteloop@gmail.com>
Reviewed-on: https://review.lttng.org/c/babeltrace/+/12352
Tested-by: jenkins <jenkins@lttng.org>
* LTTng. In these cases, use the viewer_stream_id that
* is unique for a live viewer session.
*/
* LTTng. In these cases, use the viewer_stream_id that
* is unique for a live viewer session.
*/
- lttng_live_stream->stream = bt_stream_create_with_id(
- stream_class, lttng_live_stream->trace->trace, lttng_live_stream->viewer_stream_id);
+ lttng_live_stream->stream =
+ bt_stream_create_with_id(stream_class, lttng_live_stream->trace->trace->libObjPtr(),
+ lttng_live_stream->viewer_stream_id);
} else {
lttng_live_stream->stream = bt_stream_create_with_id(
} else {
lttng_live_stream->stream = bt_stream_create_with_id(
- stream_class, lttng_live_stream->trace->trace, (uint64_t) stream_id);
+ stream_class, lttng_live_stream->trace->trace->libObjPtr(), (uint64_t) stream_id);
}
if (!lttng_live_stream->stream) {
}
if (!lttng_live_stream->stream) {
BT_ASSERT(trace->stream_iterators);
g_ptr_array_free(trace->stream_iterators, TRUE);
BT_ASSERT(trace->stream_iterators);
g_ptr_array_free(trace->stream_iterators, TRUE);
- BT_TRACE_PUT_REF_AND_RESET(trace->trace);
-
lttng_live_metadata_fini(trace);
delete trace;
}
lttng_live_metadata_fini(trace);
delete trace;
}
lttng_live_trace *trace = new lttng_live_trace {session->logger};
trace->session = session;
trace->id = trace_id;
lttng_live_trace *trace = new lttng_live_trace {session->logger};
trace->session = session;
trace->id = trace_id;
trace->stream_iterators =
g_ptr_array_new_with_free_func((GDestroyNotify) lttng_live_stream_iterator_destroy);
BT_ASSERT(trace->stream_iterators);
trace->stream_iterators =
g_ptr_array_new_with_free_func((GDestroyNotify) lttng_live_stream_iterator_destroy);
BT_ASSERT(trace->stream_iterators);
/* ctf trace ID within the session. */
uint64_t id = 0;
/* ctf trace ID within the session. */
uint64_t id = 0;
- /* Owned by this. */
- bt_trace *trace = nullptr;
+ bt2::Trace::Shared trace;
bt2::TraceClass::Shared trace_class;
bt2::TraceClass::Shared trace_class;
ctf_metadata_decoder_borrow_ctf_trace_class(metadata->decoder.get());
trace->trace_class = ctf_metadata_decoder_get_ir_trace_class(metadata->decoder.get());
ctf_metadata_decoder_borrow_ctf_trace_class(metadata->decoder.get());
trace->trace_class = ctf_metadata_decoder_get_ir_trace_class(metadata->decoder.get());
- trace->trace = bt_trace_create(trace->trace_class->libObjPtr());
+ trace->trace = trace->trace_class->instantiate();
if (!trace->trace) {
BT_CPPLOGE_APPEND_CAUSE_SPEC(metadata->logger, "Failed to create bt_trace");
goto error;
}
if (!trace->trace) {
BT_CPPLOGE_APPEND_CAUSE_SPEC(metadata->logger, "Failed to create bt_trace");
goto error;
}
- if (ctf_trace_class_configure_ir_trace(tc, trace->trace)) {
+ if (ctf_trace_class_configure_ir_trace(tc, trace->trace->libObjPtr())) {
BT_CPPLOGE_APPEND_CAUSE_SPEC(metadata->logger,
"Failed to configure ctf trace class");
goto error;
BT_CPPLOGE_APPEND_CAUSE_SPEC(metadata->logger,
"Failed to configure ctf trace class");
goto error;