Add session configuration load capability to libconfig
[lttng-tools.git] / src / common / config / config.h
index 73e39fc326cafbaadf2e427c86b3ff355d82df18..f840dd05d56d1665bdd1b89848ce2049a62ae743 100644 (file)
@@ -20,6 +20,7 @@
 
 #include <common/config/ini.h>
 #include <common/macros.h>
+#include <stdint.h>
 
 struct config_entry {
        /* section is NULL if the entry is not in a section */
@@ -28,6 +29,9 @@ struct config_entry {
        const char *value;
 };
 
+/* Instance of a configuration writer. */
+struct config_writer;
+
 /*
  * A config_entry_handler_cb receives config_entry structures belonging to the
  * sections the handler has been registered to.
@@ -70,4 +74,136 @@ int config_get_section_entries(const char *path, const char *section,
 LTTNG_HIDDEN
 int config_parse_value(const char *value);
 
+/*
+ * Create an instance of a configuration writer.
+ *
+ * fd_output File to which the XML content must be written. The file will be
+ * closed once the config_writer has been destroyed.
+ *
+ * Returns an instance of a configuration writer on success, NULL on
+ * error.
+ */
+LTTNG_HIDDEN
+struct config_writer *config_writer_create(int fd_output);
+
+/*
+ * Destroy an instance of a configuration writer.
+ *
+ * writer An instance of a configuration writer.
+ *
+ * Returns zero if the XML document could be closed cleanly. Negative values
+ * indicate an error.
+ */
+LTTNG_HIDDEN
+int config_writer_destroy(struct config_writer *writer);
+
+/*
+ * Open an element tag.
+ *
+ * writer An instance of a configuration writer.
+ *
+ * element_name Element tag name.
+ *
+ * Returns zero if the XML document could be closed cleanly.
+ * Negative values indicate an error.
+ */
+LTTNG_HIDDEN
+int config_writer_open_element(struct config_writer *writer,
+               const char *element_name);
+
+/*
+ * Close the current element tag.
+ *
+ * writer An instance of a configuration writer.
+ *
+ * Returns zero if the XML document could be closed cleanly.
+ * Negative values indicate an error.
+ */
+LTTNG_HIDDEN
+int config_writer_close_element(struct config_writer *writer);
+
+/*
+ * Write an element of type unsigned int.
+ *
+ * writer An instance of a configuration writer.
+ *
+ * element_name Element name.
+ *
+ * value Unsigned int value of the element
+ *
+ * Returns zero if the element's value could be written.
+ * Negative values indicate an error.
+ */
+LTTNG_HIDDEN
+int config_writer_write_element_unsigned_int(struct config_writer *writer,
+               const char *element_name, uint64_t value);
+
+/*
+ * Write an element of type signed int.
+ *
+ * writer An instance of a configuration writer.
+ *
+ * element_name Element name.
+ *
+ * value Signed int value of the element
+ *
+ * Returns zero if the element's value could be written.
+ * Negative values indicate an error.
+ */LTTNG_HIDDEN
+int config_writer_write_element_signed_int(struct config_writer *writer,
+               const char *element_name, int64_t value);
+
+/*
+ * Write an element of type boolean.
+ *
+ * writer An instance of a configuration writer.
+ *
+ * element_name Element name.
+ *
+ * value Boolean value of the element
+ *
+ * Returns zero if the element's value could be written.
+ * Negative values indicate an error.
+ */
+LTTNG_HIDDEN
+int config_writer_write_element_bool(struct config_writer *writer,
+               const char *element_name, int value);
+
+/*
+ * Write an element of type string.
+ *
+ * writer An instance of a configuration writer.
+ *
+ * element_name Element name.
+ *
+ * value String value of the element
+ *
+ * Returns zero if the element's value could be written.
+ * Negative values indicate an error.
+ */
+LTTNG_HIDDEN
+int config_writer_write_element_string(struct config_writer *writer,
+               const char *element_name, const char *value);
+
+/*
+ * Load session configurations from a file.
+ *
+ * path Path to an LTTng session configuration file. All *.lttng files
+ * will be loaded if path is a directory. If path is NULL, the default
+ * paths will be searched in the following order:
+ *     1) $HOME/.lttng/sessions
+ *     2) /etc/lttng/sessions
+ *
+ * session_name Name of the session to load. Will load all
+ * sessions from path if NULL.
+ *
+ * override Override current session configuration if it exists.
+ *
+ * Returns zero if the session could be loaded successfully. Returns
+ * a negative LTTNG_ERR code on error.
+ */
+LTTNG_HIDDEN
+int config_load_session(const char *path, const char *session_name,
+               int override);
+
 #endif /* _CONFIG_H */
This page took 0.024556 seconds and 4 git commands to generate.