Commit | Line | Data |
---|---|---|
da9dd521 JG |
1 | /* |
2 | * Copyright (C) 2022 Jérémie Galarneau <jeremie.galarneau@efficios.com> | |
3 | * | |
4 | * SPDX-License-Identifier: GPL-2.0-only | |
5 | * | |
6 | */ | |
7 | ||
8 | #ifndef LTTNG_CTF2_TRACE_CLASS_VISITOR_H | |
9 | #define LTTNG_CTF2_TRACE_CLASS_VISITOR_H | |
10 | ||
da9dd521 | 11 | #include "event-class.hpp" |
28f23191 JG |
12 | #include "stream-class.hpp" |
13 | #include "trace-class.hpp" | |
da9dd521 | 14 | |
da9dd521 | 15 | #include <vendor/nlohmann/json.hpp> |
28f23191 | 16 | #include <vendor/optional.hpp> |
da9dd521 JG |
17 | |
18 | #include <functional> | |
19 | ||
20 | namespace lttng { | |
21 | namespace sessiond { | |
22 | namespace ctf2 { | |
23 | ||
24 | using append_metadata_fragment_function = std::function<void(const std::string& fragment)>; | |
25 | ||
26 | class trace_class_visitor : public lttng::sessiond::trace::trace_class_visitor { | |
27 | public: | |
4f2da8b8 | 28 | trace_class_visitor(append_metadata_fragment_function append_metadata); |
da9dd521 JG |
29 | |
30 | virtual void visit(const lttng::sessiond::trace::trace_class& trace_class) override final; | |
31 | virtual void visit(const lttng::sessiond::trace::clock_class& clock_class) override final; | |
32 | virtual void visit(const lttng::sessiond::trace::stream_class& stream_class) override final; | |
33 | virtual void visit(const lttng::sessiond::trace::event_class& event_class) override final; | |
34 | ||
35 | private: | |
36 | void append_metadata_fragment(const nlohmann::json& fragment) const; | |
37 | ||
da9dd521 JG |
38 | const append_metadata_fragment_function _append_metadata_fragment; |
39 | }; | |
40 | ||
41 | } /* namespace ctf2 */ | |
42 | } /* namespace sessiond */ | |
43 | } /* namespace lttng */ | |
44 | ||
45 | #endif /* LTTNG_CTF2_TRACE_CLASS_VISITOR_H */ |