#include <stdbool.h>
#include <babeltrace/babeltrace-internal.h>
-#include <babeltrace/graph/component.h>
-#include <babeltrace/ctf-writer/writer.h>
+#include <babeltrace/babeltrace.h>
struct writer_component {
GString *base_path;
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 bt_trace and struct fs_writer. */
GHashTable *trace_map;
FILE *err;
- struct bt_notification_iterator *input_iterator;
+ bt_notification_iterator *input_iterator;
bool error;
+ bool single_trace;
+ unsigned int nr_traces;
+};
+
+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;
+ const bt_trace *trace;
+ const bt_trace *writer_trace;
+ struct writer_component *writer_component;
int static_listener_id;
- unsigned int active_streams;
int trace_static;
/* Map between reader and writer stream. */
GHashTable *stream_map;
/* Map between reader and writer stream class. */
GHashTable *stream_class_map;
+ GHashTable *stream_states;
};
BT_HIDDEN
struct fs_writer *fs_writer);
BT_HIDDEN
enum bt_component_status writer_output_event(struct writer_component *writer,
- struct bt_ctf_event *event);
+ const bt_event *event);
BT_HIDDEN
enum bt_component_status writer_new_packet(struct writer_component *writer,
- struct bt_ctf_packet *packet);
+ const bt_packet *packet);
BT_HIDDEN
enum bt_component_status writer_close_packet(struct writer_component *writer,
- struct bt_ctf_packet *packet);
+ const bt_packet *packet);
BT_HIDDEN
enum bt_component_status writer_stream_begin(struct writer_component *writer,
- struct bt_ctf_stream *stream);
+ const bt_stream *stream);
BT_HIDDEN
enum bt_component_status writer_stream_end(struct writer_component *writer,
- struct bt_ctf_stream *stream);
+ const bt_stream *stream);
BT_HIDDEN
enum bt_component_status writer_component_init(
- struct bt_private_component *component, struct bt_value *params,
+ bt_self_component *component, bt_value *params,
void *init_method_data);
BT_HIDDEN
-enum bt_component_status writer_run(struct bt_private_component *component);
+enum bt_component_status writer_run(bt_self_component *component);
BT_HIDDEN
void writer_component_port_connected(
- struct bt_private_component *component,
+ bt_self_component *component,
struct bt_private_port *self_port,
- struct bt_port *other_port);
+ const bt_port *other_port);
BT_HIDDEN
-void writer_component_finalize(struct bt_private_component *component);
+void writer_component_finalize(bt_self_component *component);
#endif /* BABELTRACE_PLUGIN_WRITER_H */