sessiond: add tracer-agnostic trace hierarchy classes
[lttng-tools.git] / src / bin / lttng-sessiond / stream-class.hpp
diff --git a/src/bin/lttng-sessiond/stream-class.hpp b/src/bin/lttng-sessiond/stream-class.hpp
new file mode 100644 (file)
index 0000000..636d0b1
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2022 Jérémie Galarneau <jeremie.galarneau@efficios.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0-only
+ *
+ */
+
+#ifndef LTTNG_STREAM_CLASS_H
+#define LTTNG_STREAM_CLASS_H
+
+#include "field.hpp"
+
+#include <vector>
+
+namespace lttng {
+namespace sessiond {
+namespace trace {
+
+class trace_class_visitor;
+
+class stream_class {
+public:
+       enum class header_type { COMPACT, LARGE };
+
+       /*
+        * Derived classes must implement _accept_on_event_classes()
+        * to continue the traversal to the stream class' event classes.
+        */
+       void accept(trace_class_visitor& visitor) const;
+       virtual ~stream_class() = default;
+
+       virtual const lttng::sessiond::trace::type& get_context() const;
+
+       const unsigned int id;
+       const header_type header_type;
+
+protected:
+       stream_class(unsigned int id, enum header_type header_type);
+       virtual void _accept_on_event_classes(trace_class_visitor& trace_class_visitor) const = 0;
+
+       lttng::sessiond::trace::type::cuptr _context;
+};
+
+} /* namespace trace */
+} /* namespace sessiond */
+} /* namespace lttng */
+
+#endif /* LTTNG_STREAM_CLASS_H */
This page took 0.025202 seconds and 4 git commands to generate.