Basic serialization/deserialization for lttng_session
[deliverable/lttng-tools.git] / include / lttng / session-internal.hpp
index 7f73b9610dd3adf3c54539e90172f65a19e0bae5..b56ab214cb268c5042545b02512633d5baa49711 100644 (file)
@@ -8,14 +8,43 @@
 #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 */
This page took 0.024618 seconds and 5 git commands to generate.