X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=include%2Flttng%2Fcondition%2Fsession-rotation.h;fp=include%2Flttng%2Fcondition%2Fsession-rotation.h;h=5ed71fa4dc9ebce1e631694aa56364833371ccc0;hb=c19092cd4d6af49c38322fc55ca91f17f03f32ac;hp=0000000000000000000000000000000000000000;hpb=9ef5b6be9aba525924d1eab6d3260f4c7ff165ee;p=lttng-tools.git diff --git a/include/lttng/condition/session-rotation.h b/include/lttng/condition/session-rotation.h new file mode 100644 index 000000000..5ed71fa4d --- /dev/null +++ b/include/lttng/condition/session-rotation.h @@ -0,0 +1,140 @@ +/* + * Copyright (C) 2017 - Jérémie Galarneau + * + * This library is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License, version 2.1 only, + * as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef LTTNG_CONDITION_SESSION_ROTATION_H +#define LTTNG_CONDITION_SESSION_ROTATION_H + +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Session rotation conditions allow an action to be taken whenever a + * session rotation is ongoing or completed. + * + * Session rotation conditions have the following properties: + * - the exact name of the session to be monitored for rotations + * + * Wildcards, regular expressions or other globbing mechanisms are not supported + * in session rotation condition properties. + */ + +/* + * Create a newly allocated session rotation in progress condition. + * + * A session rotation ongoing condition evaluates to true whenever a rotation + * is ongoing for a given session. + * + * Returns a new condition on success, NULL on failure. This condition must be + * destroyed using lttng_condition_destroy(). + */ +extern struct lttng_condition * +lttng_condition_session_rotation_ongoing_create(void); + +/* + * Create a newly allocated session rotation completion condition. + * + * A session rotation completed condition evaluates to true whenever a rotation + * is completed for a given session. This condition is not evaluated on + * subscription or registration of a trigger. This means that a trigger + * using this condition will only fire when the next session rotation completes. + * Previously completed rotations will have no effect. + * + * Returns a new condition on success, NULL on failure. This condition must be + * destroyed using lttng_condition_destroy(). + */ + extern struct lttng_condition * + lttng_condition_session_rotation_completed_create(void); + +/* + * Get the session name property of a session rotation condition. + * + * The caller does not assume the ownership of the returned session name. The + * session name shall only only be used for the duration of the condition's + * lifetime, or before a different session name is set. + * + * Returns LTTNG_CONDITION_STATUS_OK and a pointer to the condition's session + * name on success, LTTNG_CONDITION_STATUS_INVALID if an invalid + * parameter is passed, or LTTNG_CONDITION_STATUS_UNSET if a session name + * was not set prior to this call. + */ +extern enum lttng_condition_status +lttng_condition_session_rotation_get_session_name( + const struct lttng_condition *condition, + const char **session_name); + +/* + * Set the session name property of a session rotation condition. + * + * The passed session name parameter will be copied to the condition. + * + * Returns LTTNG_CONDITION_STATUS_OK on success, LTTNG_CONDITION_STATUS_INVALID + * if invalid paramenters are passed. + */ +extern enum lttng_condition_status +lttng_condition_session_rotation_set_session_name( + struct lttng_condition *condition, + const char *session_name); + +/** + * lttng_evaluation_session_rotation are specialised lttng_evaluations + * which allow users to query a number of properties resulting from the + * evaluation of a condition which evaluated to true. + */ + +/* + * Get the session rotation id property of a session rotation evaluation. + * + * Returns LTTNG_EVALUATION_STATUS_OK on success and the id of the session + * rotation, or LTTNG_EVALUATION_STATUS_INVALID if an invalid parameter is + * passed. + */ +extern enum lttng_evaluation_status +lttng_evaluation_session_rotation_get_id( + const struct lttng_evaluation *evaluation, uint64_t *id); + +/* + * Get the session rotation location property of a session rotation completed + * evaluation. + * + * The caller does not assume the ownership of the returned location. The + * location shall only only be used for the duration of the evaluation's + * lifetime. + * + * Returns LTTNG_EVALUATION_STATUS_OK and set location on success. + * A NULL location may be returned if a rotation chunk's location + * has expired. + * + * LTTNG_EVALUATION_STATUS_INVALID is returned if an invalid parameter is + * passed. + */ +extern enum lttng_evaluation_status +lttng_evaluation_session_rotation_completed_get_location( + const struct lttng_evaluation *evaluation, + const struct lttng_trace_archive_location **location); + +#ifdef __cplusplus +} +#endif + +#endif /* LTTNG_CONDITION_SESSION_ROTATION_H */