struct ctf_metadata_decoder *decoder;
/* Owned by this */
- struct bt_private_trace *trace;
+ bt_trace_class *trace_class;
/* Weak (owned by `decoder` above) */
struct ctf_trace_class *tc;
/* Owned by this */
char *text;
- uint8_t uuid[16];
- bool is_uuid_set;
int bo;
};
struct ctf_fs_component {
/* Weak, guaranteed to exist */
- struct bt_self_component_source *self_comp;
+ bt_self_component_source *self_comp;
/* Array of struct ctf_fs_port_data *, owned by this */
GPtrArray *port_data;
/* Owned by this */
struct ctf_fs_metadata *metadata;
+ /* Owned by this */
+ bt_trace *trace;
+
/* Array of struct ctf_fs_ds_file_group *, owned by this */
GPtrArray *ds_file_groups;
GPtrArray *ds_file_infos;
/* Owned by this */
- struct bt_private_stream_class *stream_class;
+ struct ctf_stream_class *sc;
/* Owned by this */
- struct bt_private_stream *stream;
+ bt_stream *stream;
/* Stream (instance) ID; -1ULL means none */
uint64_t stream_id;
struct ctf_fs_component *ctf_fs;
};
-struct ctf_fs_notif_iter_data {
+struct ctf_fs_msg_iter_data {
/* Weak */
- struct bt_self_notification_iterator *pc_notif_iter;
+ bt_self_message_iterator *pc_msg_iter;
/* Weak, belongs to ctf_fs_trace */
struct ctf_fs_ds_file_group *ds_file_group;
size_t ds_file_info_index;
/* Owned by this */
- struct bt_notif_iter *notif_iter;
-
- /* True to skip BT_NOTIFICATION_TYPE_STREAM_BEGIN notifications */
- bool skip_stream_begin_notifs;
+ struct bt_msg_iter *msg_iter;
};
BT_HIDDEN
-enum bt_self_component_status ctf_fs_init(
- struct bt_self_component_source *source,
- const struct bt_value *params, void *init_method_data);
+bt_self_component_status ctf_fs_init(
+ bt_self_component_source *source,
+ const bt_value *params, void *init_method_data);
BT_HIDDEN
-void ctf_fs_finalize(struct bt_self_component_source *component);
+void ctf_fs_finalize(bt_self_component_source *component);
BT_HIDDEN
-enum bt_query_status ctf_fs_query(
- struct bt_self_component_class_source *comp_class,
- struct bt_query_executor *query_exec,
- const char *object, const struct bt_value *params,
- const struct bt_value **result);
+bt_query_status ctf_fs_query(
+ bt_self_component_class_source *comp_class,
+ const bt_query_executor *query_exec,
+ const char *object, const bt_value *params,
+ const bt_value **result);
BT_HIDDEN
-struct ctf_fs_trace *ctf_fs_trace_create(const char *path, const char *name,
- struct ctf_fs_metadata_config *config);
+bt_self_message_iterator_status ctf_fs_iterator_init(
+ bt_self_message_iterator *self_msg_iter,
+ bt_self_component_source *self_comp,
+ bt_self_component_port_output *self_port);
BT_HIDDEN
-void ctf_fs_trace_destroy(struct ctf_fs_trace *trace);
+void ctf_fs_iterator_finalize(bt_self_message_iterator *it);
BT_HIDDEN
-int ctf_fs_find_traces(GList **trace_paths, const char *start_path);
+bt_self_message_iterator_status ctf_fs_iterator_next(
+ bt_self_message_iterator *iterator,
+ bt_message_array_const msgs, uint64_t capacity,
+ uint64_t *count);
BT_HIDDEN
-GList *ctf_fs_create_trace_names(GList *trace_paths, const char *base_path);
+bt_self_message_iterator_status ctf_fs_iterator_seek_beginning(
+ bt_self_message_iterator *message_iterator);
+
+/* Create and initialize a new, empty ctf_fs_component. */
BT_HIDDEN
-enum bt_self_notification_iterator_status ctf_fs_iterator_init(
- struct bt_self_notification_iterator *self_notif_iter,
- struct bt_self_component_source *self_comp,
- struct bt_self_component_port_output *self_port);
+struct ctf_fs_component *ctf_fs_component_create(void);
+
+/*
+ * Search recursively under all paths in `paths_value` (an array of strings),
+ * for CTF traces. For each CTF trace found, create a ctf_fs_trace in
+ * `ctf_fs` representing that trace.
+ */
BT_HIDDEN
-void ctf_fs_iterator_finalize(struct bt_self_notification_iterator *it);
+int ctf_fs_component_create_ctf_fs_traces(bt_self_component_source *self_comp,
+ struct ctf_fs_component *ctf_fs,
+ const bt_value *paths_value);
+
+/* Free `ctf_fs` and everything it owns. */
BT_HIDDEN
-enum bt_self_notification_iterator_status ctf_fs_iterator_next(
- struct bt_self_notification_iterator *iterator,
- bt_notification_array notifs, uint64_t capacity,
- uint64_t *count);
+void ctf_fs_destroy(struct ctf_fs_component *ctf_fs);
+
+/*
+ * Read and validate parameters taken by the src.ctf.fs plugin.
+ *
+ * - The mandatory `paths` parameter is returned in `*paths`.
+ * - The optional `clock-class-offset-s` and `clock-class-offset-ns`, if
+ * present, are recorded in the `ctf_fs` structure.
+ *
+ * Return true on success, false if any parameter didn't pass validation.
+ */
+
+BT_HIDDEN
+bool read_src_fs_parameters(const bt_value *params,
+ const bt_value **paths, struct ctf_fs_component *ctf_fs);
#endif /* BABELTRACE_PLUGIN_CTF_FS_H */