X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=plugins%2Fctf%2Ffs-sink%2Fwriter.h;h=81ca1ed9acbf91f0412357ba4e4e60ce24803a1c;hb=add9fdff7e749abee3164f40f18e09c1e9573d36;hp=1765a9617762c9647bea4e3afbd388def1735c69;hpb=d8866baa7f1ae173ac9d9fac0ad55cb28f883cbf;p=babeltrace.git diff --git a/plugins/ctf/fs-sink/writer.h b/plugins/ctf/fs-sink/writer.h index 1765a961..81ca1ed9 100644 --- a/plugins/ctf/fs-sink/writer.h +++ b/plugins/ctf/fs-sink/writer.h @@ -37,18 +37,42 @@ struct writer_component { GString *trace_name_base; /* For the directory name suffix. */ int trace_id; - /* Map between struct bt_ctf_trace and struct bt_ctf_writer. */ + /* Map between struct bt_ctf_trace and struct fs_writer. */ GHashTable *trace_map; + FILE *err; + struct bt_notification_iterator *input_iterator; + bool error; +}; + +enum fs_writer_stream_state { + /* + * We know the stream exists but we have never received a + * stream_begin notification for it. + */ + FS_WRITER_UNKNOWN_STREAM, + /* We know this stream is active (between stream_begin and _end). */ + FS_WRITER_ACTIVE_STREAM, + /* We have received a stream_end for this stream. */ + FS_WRITER_COMPLETED_STREAM, +}; + +struct fs_writer { + struct bt_ctf_writer *writer; + struct bt_ctf_trace *trace; + struct bt_ctf_trace *writer_trace; + struct writer_component *writer_component; + int static_listener_id; + int trace_static; /* Map between reader and writer stream. */ GHashTable *stream_map; /* Map between reader and writer stream class. */ GHashTable *stream_class_map; - FILE *err; - struct bt_notification_iterator *input_iterator; - bool processed_first_event; - bool error; + GHashTable *stream_states; }; +BT_HIDDEN +void writer_close(struct writer_component *writer_component, + struct fs_writer *fs_writer); BT_HIDDEN enum bt_component_status writer_output_event(struct writer_component *writer, struct bt_ctf_event *event); @@ -58,6 +82,12 @@ enum bt_component_status writer_new_packet(struct writer_component *writer, BT_HIDDEN enum bt_component_status writer_close_packet(struct writer_component *writer, struct bt_ctf_packet *packet); +BT_HIDDEN +enum bt_component_status writer_stream_begin(struct writer_component *writer, + struct bt_ctf_stream *stream); +BT_HIDDEN +enum bt_component_status writer_stream_end(struct writer_component *writer, + struct bt_ctf_stream *stream); BT_HIDDEN enum bt_component_status writer_component_init(