API: get/set trace format descriptor for session descriptor
[lttng-tools.git] / src / common / session-descriptor.cpp
index 058783785aec6481cd262afe9811d60ae421c36f..b5614a20f3149316f6c213a8dd2caa8f71965ea0 100644 (file)
@@ -1245,3 +1245,35 @@ int lttng_session_descriptor_assign(
 end:
        return ret;
 }
+
+enum lttng_session_descriptor_status lttng_session_descriptor_get_trace_format_descriptor(
+               const struct lttng_session_descriptor *session_descriptor,
+               const struct lttng_trace_format_descriptor **trace_format_descriptor)
+{
+       *trace_format_descriptor = reinterpret_cast<const lttng_trace_format_descriptor *>(
+                       session_descriptor->format_descriptor);
+       return LTTNG_SESSION_DESCRIPTOR_STATUS_OK;
+}
+
+/* trace_format_descriptor is copied internally */
+enum lttng_session_descriptor_status lttng_session_descriptor_set_trace_format_descriptor(
+               struct lttng_session_descriptor *session_descriptor,
+               const struct lttng_trace_format_descriptor *trace_format_descriptor)
+{
+       if (!session_descriptor || !trace_format_descriptor) {
+               return LTTNG_SESSION_DESCRIPTOR_STATUS_INVALID;
+       }
+
+       try {
+               lttng::trace_format_descriptor::uptr copy =
+                               reinterpret_cast<const lttng::trace_format_descriptor *>(
+                                               trace_format_descriptor)
+                                               ->clone();
+               delete session_descriptor->format_descriptor;
+               session_descriptor->format_descriptor = copy.release();
+       } catch (const std::exception& ex) {
+               return LTTNG_SESSION_DESCRIPTOR_STATUS_INVALID;
+       }
+
+       return LTTNG_SESSION_DESCRIPTOR_STATUS_OK;
+}
This page took 0.029522 seconds and 5 git commands to generate.