#ifndef LTTNG_SESSION_INTERNAL_H
#define LTTNG_SESSION_INTERNAL_H
-#include <lttng/constant.h>
+#include <common/buffer-view.hpp>
#include <common/macros.hpp>
+#include <common/optional.hpp>
+#include <lttng/constant.h>
+#include <lttng/lttng-error.h>
+
+struct lttng_session;
+struct lttng_payload_view;
struct lttng_session_extended {
- struct {
- uint64_t value;
- uint8_t is_set;
- } LTTNG_PACKED creation_time;
+ LTTNG_OPTIONAL(uint64_t) creation_time;
+};
+
+struct lttng_session_comm {
+ uint32_t name_len;
+ uint32_t path_len;
+ uint8_t enabled;
+ uint32_t snapshot_mode;
+ uint32_t live_timer_interval;
+ /* lttng_session_extended data */
+ LTTNG_OPTIONAL(uint64_t) LTTNG_PACKED creation_time;
+ /*
+ * Dynamic payload:
+ * - name[name_len]
+ * - path[path_len]
+ */
+ char payload[];
} LTTNG_PACKED;
+int lttng_session_serialize(const struct lttng_session *session, struct lttng_payload *payload);
+
+ssize_t lttng_session_create_from_payload(
+ struct lttng_payload_view *view, struct lttng_session **out_session);
+
+enum lttng_error_code lttng_sessions_create_and_flatten_from_payload(
+ struct lttng_payload_view *view,
+ unsigned int count,
+ struct lttng_session **sessions);
+
#endif /* LTTNG_SESSION_INTERNAL_H */