goto end;
}
- read_len = MIN(request_sz, stream->buflen);
+ read_len = MIN(request_sz, stream->buf.size());
read_len = MIN(read_len, len_left);
- status = lttng_live_get_stream_bytes(live_msg_iter, stream, stream->buf, stream->offset,
+ status = lttng_live_get_stream_bytes(live_msg_iter, stream, stream->buf.data(), stream->offset,
read_len, &recv_len);
- *buffer_addr = stream->buf;
+ *buffer_addr = stream->buf.data();
*buffer_sz = recv_len;
stream->offset += recv_len;
end:
"Creating stream {} (ID: {}) out of stream class {}",
lttng_live_stream->name->str, stream_id, stream_class_id);
+ bt_stream *stream;
+
if (stream_id < 0) {
/*
* No stream instance ID in the stream. It's possible
* 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);
+ 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(
- stream_class, lttng_live_stream->trace->trace, (uint64_t) stream_id);
+ stream = bt_stream_create_with_id(
+ stream_class, lttng_live_stream->trace->trace->libObjPtr(), (uint64_t) stream_id);
}
- if (!lttng_live_stream->stream) {
+ if (!stream) {
BT_CPPLOGE_APPEND_CAUSE_SPEC(
lttng_live_stream->logger,
"Cannot create stream {} (stream class ID {}, stream ID {})",
lttng_live_stream->name->str, stream_class_id, stream_id);
- goto end;
+ return nullptr;
}
- bt_stream_set_name(lttng_live_stream->stream, lttng_live_stream->name->str);
+ lttng_live_stream->stream = bt2::Stream::Shared::createWithoutRef(stream);
+ lttng_live_stream->stream->name(lttng_live_stream->name->str);
}
-end:
- return lttng_live_stream->stream;
+ return lttng_live_stream->stream->libObjPtr();
}
static struct ctf_msg_iter_medium_ops medops = {
goto error;
}
}
- stream_iter->buf = g_new0(uint8_t, lttng_live->max_query_size);
- if (!stream_iter->buf) {
- BT_CPPLOGE_APPEND_CAUSE_SPEC(stream_iter->logger,
- "Failed to allocate live stream iterator buffer");
- goto error;
- }
-
- stream_iter->buflen = lttng_live->max_query_size;
+ stream_iter->buf.resize(lttng_live->max_query_size);
stream_iter->name = g_string_new(NULL);
if (!stream_iter->name) {
BT_CPPLOGE_APPEND_CAUSE_SPEC(stream_iter->logger,
return;
}
- if (stream_iter->stream) {
- BT_STREAM_PUT_REF_AND_RESET(stream_iter->stream);
- }
-
- if (stream_iter->msg_iter) {
- ctf_msg_iter_destroy(stream_iter->msg_iter);
- }
- g_free(stream_iter->buf);
if (stream_iter->name) {
g_string_free(stream_iter->name, TRUE);
}