Commit | Line | Data |
---|---|---|
d7bfb9b0 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_TSDL_TRACE_CLASS_VISITOR_H | |
9 | #define LTTNG_TSDL_TRACE_CLASS_VISITOR_H | |
10 | ||
11 | #include "trace-class.hpp" | |
12 | #include "stream-class.hpp" | |
13 | #include "event-class.hpp" | |
14 | ||
15 | #include <vendor/optional.hpp> | |
16 | ||
17 | #include <functional> | |
18 | ||
19 | namespace lttng { | |
20 | namespace sessiond { | |
21 | namespace tsdl { | |
22 | ||
23 | using append_metadata_fragment_function = std::function<void(const std::string& fragment)>; | |
24 | ||
25 | class trace_class_visitor : public lttng::sessiond::trace::trace_class_visitor { | |
26 | public: | |
27 | trace_class_visitor(const lttng::sessiond::trace::abi& trace_abi, | |
28 | append_metadata_fragment_function append_metadata); | |
29 | ||
d7bfb9b0 | 30 | virtual void visit(const lttng::sessiond::trace::trace_class& trace_class) override final; |
d7bfb9b0 | 31 | virtual void visit(const lttng::sessiond::trace::clock_class& clock_class) override final; |
d7bfb9b0 | 32 | virtual void visit(const lttng::sessiond::trace::stream_class& stream_class) override final; |
d7bfb9b0 JG |
33 | virtual void visit(const lttng::sessiond::trace::event_class& event_class) override final; |
34 | ||
35 | private: | |
36 | /* Coherent (parseable) fragments must be appended. */ | |
37 | void append_metadata_fragment(const std::string& fragment) const; | |
38 | ||
39 | const lttng::sessiond::trace::abi& _trace_abi; | |
40 | const append_metadata_fragment_function _append_metadata_fragment; | |
d7bfb9b0 JG |
41 | }; |
42 | ||
43 | } /* namespace tsdl */ | |
44 | } /* namespace sessiond */ | |
45 | } /* namespace lttng */ | |
46 | ||
47 | #endif /* LTTNG_TSDL_TRACE_CLASS_VISITOR_H */ |