X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Fconfig%2Fconfig.h;h=f840dd05d56d1665bdd1b89848ce2049a62ae743;hp=73e39fc326cafbaadf2e427c86b3ff355d82df18;hb=dcf266c050443412ec370bf86ddb3fddd2809eb9;hpb=1501a7f32e1abf3e805053d4241c9796882d56bc diff --git a/src/common/config/config.h b/src/common/config/config.h index 73e39fc32..f840dd05d 100644 --- a/src/common/config/config.h +++ b/src/common/config/config.h @@ -20,6 +20,7 @@ #include #include +#include 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 */