API: get/set trace format descriptor for session descriptor
authorJonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Fri, 22 Jul 2022 18:19:28 +0000 (14:19 -0400)
committerJonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Fri, 19 Aug 2022 16:04:42 +0000 (12:04 -0400)
Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Change-Id: I4b658596af68a530b9312236bacf5b7abcafdd22

include/lttng/session-descriptor.h
src/common/session-descriptor.cpp
src/lib/lttng-ctl/liblttng-ctl.sym

index cbbf10d9e850da396e63bb457d4c303891f00ebb..16c8b484f497c5beb367afcbc1da3fc945b5f56e 100644 (file)
@@ -234,6 +234,39 @@ lttng_session_descriptor_get_session_name(
                const struct lttng_session_descriptor *descriptor,
                const char **name);
 
+/*
+ * Get a session descriptor's trace format descriptor.
+ *
+ * The 'trace_format_descriptor' parameter is used as an output parameter and will point to
+ * the session descriptor's trace format descriptor on success
+ * (LTTNG_SESSION_DESCRIPTOR_STATUS_OK). Its content of is left unspecified
+ * for other return codes. The pointer returned through 'trace_format_descriptor' is only
+ * guaranteed to remain valid until the next method call on the session
+ * descriptor.
+ *
+ * Returns LTTNG_SESSION_DESCRIPTOR_STATUS_OK on success,
+ * LTTNG_SESSION_DESCRIPTOR_STATUS_INVALID if 'descriptor' or 'trace_format_descriptor' are
+ * NULL.
+ */
+LTTNG_EXPORT extern 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);
+
+/*
+ * Set a session descriptor's trace format descriptor.
+ *
+ * The trace format descriptor is copied internally.
+ *
+ * Returns LTTNG_SESSION_DESCRIPTOR_STATUS_OK on success,
+ * LTTNG_SESSION_DESCRIPTOR_STATUS_INVALID if 'descriptor' or 'trace_format_descriptor' are
+ * NULL.
+ */
+LTTNG_EXPORT extern 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);
+
 /*
  * Destroy a local lttng_session object.
  *
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;
+}
index e72e121ba839a7be038c1356660bb0a2483ca953..c0092e418060d316dfdddfae155d3622a69d8d00 100644 (file)
@@ -458,10 +458,12 @@ lttng_session_daemon_notification_endpoint
 lttng_session_descriptor_create
 lttng_session_descriptor_destroy
 lttng_session_descriptor_get_session_name
+lttng_session_descriptor_get_trace_format_descriptor
 lttng_session_descriptor_live_create
 lttng_session_descriptor_live_network_create
 lttng_session_descriptor_local_create
 lttng_session_descriptor_network_create
+lttng_session_descriptor_set_trace_format_descriptor
 lttng_session_descriptor_snapshot_create
 lttng_session_descriptor_snapshot_local_create
 lttng_session_descriptor_snapshot_network_create
This page took 0.028872 seconds and 5 git commands to generate.