*
*/
-#include <assert.h>
#include <common/error.h>
#include <common/macros.h>
#include <common/mi-lttng.h>
sizeof(evaluation->parent));
lttng_evaluation_init(&evaluation->parent, type);
evaluation->id = id;
+ if (location) {
+ lttng_trace_archive_location_get(location);
+ }
evaluation->location = location;
return &evaluation->parent;
}
goto error;
}
+ lttng_trace_archive_location_put(location);
ret = size;
*_evaluation = evaluation;
return ret;
error:
- lttng_trace_archive_location_destroy(location);
+ lttng_trace_archive_location_put(location);
evaluation = NULL;
return -1;
}
rotation = container_of(evaluation,
struct lttng_evaluation_session_rotation, parent);
- lttng_trace_archive_location_destroy(rotation->location);
+ lttng_trace_archive_location_put(rotation->location);
free(rotation);
}
return status;
}
+/*
+ * The public API assumes that trace archive locations are always provided as
+ * "constant". This means that the user of liblttng-ctl never has to destroy a
+ * trace archive location. Hence, users of liblttng-ctl have no visibility of
+ * the reference counting of archive locations.
+ */
enum lttng_evaluation_status
lttng_evaluation_session_rotation_completed_get_location(
const struct lttng_evaluation *evaluation,
const char *session_name = NULL;
const char *type_element_str = NULL;
- assert(condition);
- assert(writer);
- assert(is_rotation_condition(condition));
+ LTTNG_ASSERT(condition);
+ LTTNG_ASSERT(writer);
+ LTTNG_ASSERT(is_rotation_condition(condition));
switch (lttng_condition_get_type(condition)) {
case LTTNG_CONDITION_TYPE_SESSION_ROTATION_COMPLETED:
status = lttng_condition_session_rotation_get_session_name(
condition, &session_name);
- assert(status == LTTNG_CONDITION_STATUS_OK);
- assert(session_name);
+ LTTNG_ASSERT(status == LTTNG_CONDITION_STATUS_OK);
+ LTTNG_ASSERT(session_name);
/* Open condition session rotation_* element. */
ret = mi_lttng_writer_open_element(writer, type_element_str);