#include <babeltrace/ctf-ir/stream-class-internal.h>
#include <babeltrace/ctf-ir/trace.h>
#include <babeltrace/ctf-ir/trace-internal.h>
+#include <babeltrace/ctf-ir/packet-internal.h>
#include <babeltrace/ref.h>
#include <babeltrace/compiler-internal.h>
#include <babeltrace/align-internal.h>
BT_LOGD("Destroying stream object: addr=%p, name=\"%s\"",
stream, bt_stream_get_name(stream));
+ bt_object_pool_finalize(&stream->packet_pool);
bt_stream_common_finalize((void *) obj);
g_free(stream);
}
int ret = 0;
struct bt_trace_common *trace = NULL;
- bt_object_init(stream, release_func);
+ bt_object_init_shared_with_parent(&stream->base, release_func);
if (!stream_class) {
BT_LOGW_STR("Invalid parameter: stream class is NULL.");
* Acquire reference to parent since stream will become publicly
* reachable; it needs its parent to remain valid.
*/
- bt_object_set_parent(stream, trace);
+ bt_object_set_parent(&stream->base, &trace->base);
stream->stream_class = stream_class;
stream->id = (int64_t) id;
stream->destroy_listeners = g_array_new(FALSE, TRUE,
return ret;
}
+static
+void bt_stream_free_packet(struct bt_packet *packet, struct bt_stream *stream)
+{
+ bt_packet_destroy(packet);
+}
+
static
struct bt_stream *bt_stream_create_with_id_no_check(
struct bt_stream_class *stream_class,
goto error;
}
+ ret = bt_object_pool_initialize(&stream->packet_pool,
+ (bt_object_pool_new_object_func) bt_packet_new,
+ (bt_object_pool_destroy_object_func) bt_stream_free_packet,
+ stream);
+ if (ret) {
+ BT_LOGE("Failed to initialize packet pool: ret=%d", ret);
+ goto error;
+ }
+
g_ptr_array_add(trace->common.streams, stream);
BT_LOGD("Created stream object: addr=%p", stream);
goto end;