Unify reference counting using a common bt_object base
[babeltrace.git] / include / babeltrace / ctf-ir / stream-internal.h
index afbb9ff51bea6ff68168f12fde1f7b3555e5d8fe..ca22eb1165081ea64decbac78eebccd32cd6daef 100644 (file)
@@ -28,7 +28,7 @@
  */
 
 #include <babeltrace/ctf-ir/stream.h>
-#include <babeltrace/ctf-writer/ref-internal.h>
+#include <babeltrace/object-internal.h>
 #include <babeltrace/ctf-writer/clock.h>
 #include <babeltrace/ctf-writer/event-fields.h>
 #include <babeltrace/ctf-writer/event-types.h>
 #include <babeltrace/ctf/types.h>
 #include <glib.h>
 
-typedef void(*flush_func)(struct bt_ctf_stream *, void *);
-
-struct flush_callback {
-       flush_func func;
-       void *data;
-};
-
 struct bt_ctf_stream {
-       struct bt_ctf_ref ref_count;
+       struct bt_object base;
+       /* Trace owning this stream. A stream does not own a trace. */
+       struct bt_ctf_trace *trace;
        uint32_t id;
        struct bt_ctf_stream_class *stream_class;
-       struct flush_callback flush;
        /* Array of pointers to bt_ctf_event for the current packet */
        GPtrArray *events;
+       /* Array of pointers to bt_ctf_field associated with each event */
+       GPtrArray *event_headers;
+       GPtrArray *event_contexts;
        struct ctf_stream_pos pos;
        unsigned int flushed_packet_count;
+       struct bt_ctf_field *packet_header;
        struct bt_ctf_field *packet_context;
+       struct bt_ctf_field *event_header;
+       struct bt_ctf_field *event_context;
 };
 
+/* Stream class should be frozen by the caller after creating a stream */
 BT_HIDDEN
 struct bt_ctf_stream *bt_ctf_stream_create(
-               struct bt_ctf_stream_class *stream_class);
-
-BT_HIDDEN
-int bt_ctf_stream_set_flush_callback(struct bt_ctf_stream *stream,
-               flush_func callback, void *data);
+               struct bt_ctf_stream_class *stream_class,
+               struct bt_ctf_trace *trace);
 
 BT_HIDDEN
 int bt_ctf_stream_set_fd(struct bt_ctf_stream *stream, int fd);
This page took 0.024541 seconds and 4 git commands to generate.