X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Ftrace-class.hpp;h=cbd4114869ee3904ea27d9da135890159bda33c1;hb=56047f5a23df5c2c583a102b8015bbec5a7da9f1;hp=52dcb76a94355315004638334d8672fa2f75ea57;hpb=0267b5278de7bf4ee1ec11f2270dec4b44e80f36;p=lttng-tools.git diff --git a/src/bin/lttng-sessiond/trace-class.hpp b/src/bin/lttng-sessiond/trace-class.hpp index 52dcb76a9..cbd411486 100644 --- a/src/bin/lttng-sessiond/trace-class.hpp +++ b/src/bin/lttng-sessiond/trace-class.hpp @@ -20,6 +20,7 @@ class clock_class; class stream_class; class event_class; class trace_class_visitor; +class trace_class_environment_visitor; struct abi { unsigned int bits_per_long; @@ -39,20 +40,25 @@ public: { } - const char * const name; + const char* const name; const ValueType& value; }; class trace_class { public: + virtual ~trace_class() = default; + trace_class(const trace_class&) = delete; + trace_class(trace_class&&) = delete; + trace_class& operator=(trace_class&&) = delete; + trace_class& operator=(const trace_class&) = delete; + /* * Derived classes must implement the _accept_on_*() * to continue the traversal to the trace class' children. */ virtual void accept(trace_class_visitor& trace_class_visitor) const; - virtual const lttng::sessiond::trace::type *get_packet_header() const noexcept = 0; - - virtual ~trace_class() = default; + virtual void accept(trace_class_environment_visitor& environment_visitor) const = 0; + virtual const lttng::sessiond::trace::type *packet_header() const noexcept = 0; const struct abi abi; const lttng_uuid uuid; @@ -60,33 +66,37 @@ public: protected: trace_class(const struct abi& abi, const lttng_uuid& trace_uuid); virtual void _accept_on_clock_classes(trace_class_visitor& trace_class_visitor) const = 0; - virtual void _visit_environment(trace_class_visitor& trace_class_visitor) const = 0; virtual void _accept_on_stream_classes(trace_class_visitor& trace_class_visitor) const = 0; }; +class trace_class_environment_visitor { +public: + trace_class_environment_visitor() = default; + virtual ~trace_class_environment_visitor() = default; + trace_class_environment_visitor(const trace_class_environment_visitor&) = delete; + trace_class_environment_visitor(trace_class_environment_visitor&&) = delete; + trace_class_environment_visitor& operator=(trace_class_environment_visitor&&) = delete; + trace_class_environment_visitor& operator=(const trace_class_environment_visitor&) = delete; + + virtual void visit(const environment_field& field) = 0; + virtual void visit(const environment_field& field) = 0; + virtual void visit(const environment_field& field); +}; + class trace_class_visitor { public: using cuptr = std::unique_ptr; + trace_class_visitor() = default; virtual ~trace_class_visitor() = default; + trace_class_visitor(const trace_class_visitor&) = delete; + trace_class_visitor(trace_class_visitor&&) = delete; + trace_class_visitor& operator=(trace_class_visitor&&) = delete; + trace_class_visitor& operator=(const trace_class_visitor&) = delete; - /* trace class visitor interface. */ virtual void visit(const lttng::sessiond::trace::trace_class& trace_class) = 0; - - /* clock class visitor interface. */ virtual void visit(const lttng::sessiond::trace::clock_class& clock_class) = 0; - - /* environment visitor interface. */ - virtual void environment_begin() = 0; - virtual void visit(const environment_field& field) = 0; - virtual void visit(const environment_field& field) = 0; - void visit(const environment_field& field); - virtual void environment_end() = 0; - - /* stream class visitor interface. */ virtual void visit(const lttng::sessiond::trace::stream_class& stream_class) = 0; - - /* event class visitor interface. */ virtual void visit(const lttng::sessiond::trace::event_class& event_class) = 0; };