Re-format new C++ files
[babeltrace.git] / src / plugins / ctf / fs-sink / fs-sink-trace.hpp
1 /*
2 * SPDX-License-Identifier: MIT
3 *
4 * Copyright 2019 Philippe Proulx <pproulx@efficios.com>
5 */
6
7 #ifndef BABELTRACE_PLUGIN_CTF_FS_SINK_FS_SINK_TRACE_H
8 #define BABELTRACE_PLUGIN_CTF_FS_SINK_FS_SINK_TRACE_H
9
10 #include "common/macros.h"
11 #include <babeltrace2/babeltrace.h>
12 #include "ctfser/ctfser.h"
13 #include <glib.h>
14 #include <stdint.h>
15
16 #include "fs-sink-ctf-meta.hpp"
17
18 struct fs_sink_comp;
19
20 struct fs_sink_trace
21 {
22 bt_logging_level log_level;
23 struct fs_sink_comp *fs_sink;
24
25 /* Owned by this */
26 struct fs_sink_ctf_trace *trace;
27
28 /*
29 * Weak reference: this object does not own it, and `trace`
30 * above does not own its trace IR trace and trace class either.
31 * Instead, we add a "trace destruction" listener (in
32 * create_trace()) so that this object gets destroyed when the
33 * trace object is destroyed.
34 *
35 * Otherwise (with a strong reference), we would keep this trace
36 * object alive until the upstream message iterator ends. This
37 * could "leak" resources (memory, file descriptors) associated
38 * to traces and streams which otherwise would not exist.
39 */
40 const bt_trace *ir_trace;
41
42 bt_listener_id ir_trace_destruction_listener_id;
43
44 /* Trace's directory */
45 GString *path;
46
47 /* `metadata` file path */
48 GString *metadata_path;
49
50 /*
51 * Hash table of `const bt_stream *` (weak) to
52 * `struct fs_sink_stream *` (owned by hash table).
53 */
54 GHashTable *streams;
55 };
56
57 BT_HIDDEN
58 struct fs_sink_trace *fs_sink_trace_create(struct fs_sink_comp *fs_sink, const bt_trace *ir_trace);
59
60 BT_HIDDEN
61 void fs_sink_trace_destroy(struct fs_sink_trace *trace);
62
63 #endif /* BABELTRACE_PLUGIN_CTF_FS_SINK_FS_SINK_TRACE_H */
This page took 0.030327 seconds and 4 git commands to generate.