X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fctf2-trace-class-visitor.hpp;fp=src%2Fbin%2Flttng-sessiond%2Fctf2-trace-class-visitor.hpp;h=0d28961236bcb661027cfc186933c0cafc828711;hb=da9dd5212ebacf388ebe26aa80fd0ddcf7ffe049;hp=0000000000000000000000000000000000000000;hpb=45110cdd99bd9ecc13a12d29afde3fffa48b4641;p=lttng-tools.git diff --git a/src/bin/lttng-sessiond/ctf2-trace-class-visitor.hpp b/src/bin/lttng-sessiond/ctf2-trace-class-visitor.hpp new file mode 100644 index 000000000..0d2896123 --- /dev/null +++ b/src/bin/lttng-sessiond/ctf2-trace-class-visitor.hpp @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2022 Jérémie Galarneau + * + * SPDX-License-Identifier: GPL-2.0-only + * + */ + +#ifndef LTTNG_CTF2_TRACE_CLASS_VISITOR_H +#define LTTNG_CTF2_TRACE_CLASS_VISITOR_H + +#include "trace-class.hpp" +#include "stream-class.hpp" +#include "event-class.hpp" + +#include +#include + +#include + +namespace lttng { +namespace sessiond { +namespace ctf2 { + +using append_metadata_fragment_function = std::function; + +class trace_class_visitor : public lttng::sessiond::trace::trace_class_visitor { +public: + trace_class_visitor(const lttng::sessiond::trace::abi& trace_abi, + append_metadata_fragment_function append_metadata); + + virtual void visit(const lttng::sessiond::trace::trace_class& trace_class) override final; + virtual void visit(const lttng::sessiond::trace::clock_class& clock_class) override final; + virtual void visit(const lttng::sessiond::trace::stream_class& stream_class) override final; + virtual void visit(const lttng::sessiond::trace::event_class& event_class) override final; + +private: + void append_metadata_fragment(const nlohmann::json& fragment) const; + + const lttng::sessiond::trace::abi& _trace_abi; + const append_metadata_fragment_function _append_metadata_fragment; +}; + +} /* namespace ctf2 */ +} /* namespace sessiond */ +} /* namespace lttng */ + +#endif /* LTTNG_CTF2_TRACE_CLASS_VISITOR_H */