+lttng::sessiond::trace::trace_class_visitor::cuptr
+lsu::registry_session::trace_class_visitor_factory(
+ const lst::abi& trace_abi, const lttng::trace_format_descriptor& trace_format)
+{
+ switch (trace_format.type()) {
+ case LTTNG_TRACE_FORMAT_DESCRIPTOR_TYPE_CTF_1:
+ return lttng::make_unique<ls::tsdl::trace_class_visitor>(
+ trace_abi, [this](const std::string& fragment) {
+ _append_metadata_fragment(fragment);
+ });
+ case LTTNG_TRACE_FORMAT_DESCRIPTOR_TYPE_CTF_2:
+ return lttng::make_unique<ls::ctf2::trace_class_visitor>(
+ trace_abi, [this](const std::string& fragment) {
+ _append_metadata_fragment(fragment);
+ });
+ default:
+ abort();
+ break;
+ }
+}
+