*
*/
-#include <common/error.h>
-#include <common/macros.h>
-#include <common/mi-lttng.h>
-#include <lttng/condition/condition-internal.h>
-#include <lttng/condition/session-rotation-internal.h>
-#include <lttng/location-internal.h>
+#include <common/error.hpp>
+#include <common/macros.hpp>
+#include <common/mi-lttng.hpp>
+
+#include <lttng/condition/condition-internal.hpp>
+#include <lttng/condition/session-rotation-internal.hpp>
+#include <lttng/location-internal.hpp>
+
#include <stdbool.h>
-static
-bool lttng_condition_session_rotation_validate(
- const struct lttng_condition *condition);
-static
-int lttng_condition_session_rotation_serialize(
- const struct lttng_condition *condition,
- struct lttng_payload *payload);
-static
-bool lttng_condition_session_rotation_is_equal(const struct lttng_condition *_a,
- const struct lttng_condition *_b);
-static
-void lttng_condition_session_rotation_destroy(
- struct lttng_condition *condition);
-
-static
-enum lttng_error_code lttng_condition_session_rotation_mi_serialize(
- const struct lttng_condition *condition,
- struct mi_writer *writer);
-
-static const
-struct lttng_condition rotation_condition_template = {
+static bool lttng_condition_session_rotation_validate(const struct lttng_condition *condition);
+static int lttng_condition_session_rotation_serialize(const struct lttng_condition *condition,
+ struct lttng_payload *payload);
+static bool lttng_condition_session_rotation_is_equal(const struct lttng_condition *_a,
+ const struct lttng_condition *_b);
+static void lttng_condition_session_rotation_destroy(struct lttng_condition *condition);
+
+static enum lttng_error_code
+lttng_condition_session_rotation_mi_serialize(const struct lttng_condition *condition,
+ struct mi_writer *writer);
+
+static const struct lttng_condition rotation_condition_template = {
{},
LTTNG_CONDITION_TYPE_UNKNOWN, /* type unset, shall be set on creation. */
lttng_condition_session_rotation_validate,
lttng_condition_session_rotation_mi_serialize,
};
-static
-int lttng_evaluation_session_rotation_serialize(
- const struct lttng_evaluation *evaluation,
- struct lttng_payload *payload);
-static
-void lttng_evaluation_session_rotation_destroy(
- struct lttng_evaluation *evaluation);
+static int lttng_evaluation_session_rotation_serialize(const struct lttng_evaluation *evaluation,
+ struct lttng_payload *payload);
+static void lttng_evaluation_session_rotation_destroy(struct lttng_evaluation *evaluation);
-static const
-struct lttng_evaluation rotation_evaluation_template = {
+static const struct lttng_evaluation rotation_evaluation_template = {
LTTNG_CONDITION_TYPE_UNKNOWN, /* type unset, shall be set on creation. */
lttng_evaluation_session_rotation_serialize,
lttng_evaluation_session_rotation_destroy,
};
-static
-bool is_rotation_condition(const struct lttng_condition *condition)
+static bool is_rotation_condition(const struct lttng_condition *condition)
{
enum lttng_condition_type type = lttng_condition_get_type(condition);
return type == LTTNG_CONDITION_TYPE_SESSION_ROTATION_ONGOING ||
- type == LTTNG_CONDITION_TYPE_SESSION_ROTATION_COMPLETED;
+ type == LTTNG_CONDITION_TYPE_SESSION_ROTATION_COMPLETED;
}
-static
-bool is_rotation_evaluation(const struct lttng_evaluation *evaluation)
+static bool is_rotation_evaluation(const struct lttng_evaluation *evaluation)
{
enum lttng_condition_type type = lttng_evaluation_get_type(evaluation);
return type == LTTNG_CONDITION_TYPE_SESSION_ROTATION_ONGOING ||
- type == LTTNG_CONDITION_TYPE_SESSION_ROTATION_COMPLETED;
+ type == LTTNG_CONDITION_TYPE_SESSION_ROTATION_COMPLETED;
}
-static
-bool lttng_condition_session_rotation_validate(
- const struct lttng_condition *condition)
+static bool lttng_condition_session_rotation_validate(const struct lttng_condition *condition)
{
bool valid = false;
struct lttng_condition_session_rotation *rotation;
goto end;
}
- rotation = container_of(condition,
- struct lttng_condition_session_rotation, parent);
+ rotation = lttng::utils::container_of(condition, <tng_condition_session_rotation::parent);
if (!rotation->session_name) {
ERR("Invalid session rotation condition: a target session name must be set.");
goto end;
return valid;
}
-static
-int lttng_condition_session_rotation_serialize(
- const struct lttng_condition *condition,
- struct lttng_payload *payload)
+static int lttng_condition_session_rotation_serialize(const struct lttng_condition *condition,
+ struct lttng_payload *payload)
{
int ret;
size_t session_name_len;
}
DBG("Serializing session rotation condition");
- rotation = container_of(condition, struct lttng_condition_session_rotation,
- parent);
+ rotation = lttng::utils::container_of(condition, <tng_condition_session_rotation::parent);
session_name_len = strlen(rotation->session_name) + 1;
if (session_name_len > LTTNG_NAME_MAX) {
}
rotation_comm.session_name_len = session_name_len;
- ret = lttng_dynamic_buffer_append(&payload->buffer, &rotation_comm,
- sizeof(rotation_comm));
+ ret = lttng_dynamic_buffer_append(&payload->buffer, &rotation_comm, sizeof(rotation_comm));
if (ret) {
goto end;
}
- ret = lttng_dynamic_buffer_append(&payload->buffer,
- rotation->session_name, session_name_len);
+ ret = lttng_dynamic_buffer_append(
+ &payload->buffer, rotation->session_name, session_name_len);
if (ret) {
goto end;
}
return ret;
}
-static
-bool lttng_condition_session_rotation_is_equal(const struct lttng_condition *_a,
- const struct lttng_condition *_b)
+static bool lttng_condition_session_rotation_is_equal(const struct lttng_condition *_a,
+ const struct lttng_condition *_b)
{
bool is_equal = false;
struct lttng_condition_session_rotation *a, *b;
- a = container_of(_a, struct lttng_condition_session_rotation, parent);
- b = container_of(_b, struct lttng_condition_session_rotation, parent);
+ a = lttng::utils::container_of(_a, <tng_condition_session_rotation::parent);
+ b = lttng::utils::container_of(_b, <tng_condition_session_rotation::parent);
/* Both session names must be set or both must be unset. */
- if ((a->session_name && !b->session_name) ||
- (!a->session_name && b->session_name)) {
+ if ((a->session_name && !b->session_name) || (!a->session_name && b->session_name)) {
WARN("Comparing session rotation conditions with uninitialized session names.");
goto end;
}
- if (a->session_name && b->session_name &&
- strcmp(a->session_name, b->session_name)) {
+ if (a->session_name && b->session_name && strcmp(a->session_name, b->session_name)) {
goto end;
}
return is_equal;
}
-static
-void lttng_condition_session_rotation_destroy(
- struct lttng_condition *condition)
+static void lttng_condition_session_rotation_destroy(struct lttng_condition *condition)
{
struct lttng_condition_session_rotation *rotation;
- rotation = container_of(condition,
- struct lttng_condition_session_rotation, parent);
+ rotation = lttng::utils::container_of(condition, <tng_condition_session_rotation::parent);
free(rotation->session_name);
free(rotation);
}
-static
-struct lttng_condition *lttng_condition_session_rotation_create(
- enum lttng_condition_type type)
+static struct lttng_condition *
+lttng_condition_session_rotation_create(enum lttng_condition_type type)
{
struct lttng_condition_session_rotation *condition;
- condition = (lttng_condition_session_rotation *) zmalloc(sizeof(struct lttng_condition_session_rotation));
+ condition = zmalloc<lttng_condition_session_rotation>();
if (!condition) {
return NULL;
}
- memcpy(&condition->parent, &rotation_condition_template,
- sizeof(condition->parent));
+ memcpy(&condition->parent, &rotation_condition_template, sizeof(condition->parent));
lttng_condition_init(&condition->parent, type);
return &condition->parent;
}
struct lttng_condition *lttng_condition_session_rotation_ongoing_create(void)
{
return lttng_condition_session_rotation_create(
- LTTNG_CONDITION_TYPE_SESSION_ROTATION_ONGOING);
+ LTTNG_CONDITION_TYPE_SESSION_ROTATION_ONGOING);
}
struct lttng_condition *lttng_condition_session_rotation_completed_create(void)
{
return lttng_condition_session_rotation_create(
- LTTNG_CONDITION_TYPE_SESSION_ROTATION_COMPLETED);
+ LTTNG_CONDITION_TYPE_SESSION_ROTATION_COMPLETED);
}
-static
-ssize_t init_condition_from_payload(struct lttng_condition *condition,
- struct lttng_payload_view *src_view)
+static ssize_t init_condition_from_payload(struct lttng_condition *condition,
+ struct lttng_payload_view *src_view)
{
ssize_t ret, condition_size;
enum lttng_condition_status status;
struct lttng_buffer_view name_view;
const struct lttng_condition_session_rotation_comm *condition_comm;
struct lttng_payload_view condition_comm_view =
- lttng_payload_view_from_view(
- src_view, 0, sizeof(*condition_comm));
+ lttng_payload_view_from_view(src_view, 0, sizeof(*condition_comm));
if (!lttng_payload_view_is_valid(&condition_comm_view)) {
ERR("Failed to initialize from malformed condition buffer: buffer too short to contain header");
}
condition_comm = (typeof(condition_comm)) src_view->buffer.data;
- name_view = lttng_buffer_view_from_view(&src_view->buffer,
- sizeof(*condition_comm), condition_comm->session_name_len);
+ name_view = lttng_buffer_view_from_view(
+ &src_view->buffer, sizeof(*condition_comm), condition_comm->session_name_len);
if (!lttng_buffer_view_is_valid(&name_view)) {
ERR("Failed to initialize from malformed condition buffer: buffer too short to contain session name");
goto end;
}
- status = lttng_condition_session_rotation_set_session_name(condition,
- session_name);
+ status = lttng_condition_session_rotation_set_session_name(condition, session_name);
if (status != LTTNG_CONDITION_STATUS_OK) {
ERR("Failed to set buffer consumed session name");
ret = -1;
goto end;
}
- condition_size = sizeof(*condition_comm) +
- (ssize_t) condition_comm->session_name_len;
+ condition_size = sizeof(*condition_comm) + (ssize_t) condition_comm->session_name_len;
ret = condition_size;
end:
return ret;
}
-static
-ssize_t lttng_condition_session_rotation_create_from_payload(
- struct lttng_payload_view *view,
- struct lttng_condition **_condition,
- enum lttng_condition_type type)
+static ssize_t
+lttng_condition_session_rotation_create_from_payload(struct lttng_payload_view *view,
+ struct lttng_condition **_condition,
+ enum lttng_condition_type type)
{
ssize_t ret;
struct lttng_condition *condition = NULL;
return ret;
}
-ssize_t lttng_condition_session_rotation_ongoing_create_from_payload(
- struct lttng_payload_view *view,
- struct lttng_condition **condition)
+ssize_t
+lttng_condition_session_rotation_ongoing_create_from_payload(struct lttng_payload_view *view,
+ struct lttng_condition **condition)
{
- return lttng_condition_session_rotation_create_from_payload(view,
- condition,
- LTTNG_CONDITION_TYPE_SESSION_ROTATION_ONGOING);
+ return lttng_condition_session_rotation_create_from_payload(
+ view, condition, LTTNG_CONDITION_TYPE_SESSION_ROTATION_ONGOING);
}
-ssize_t lttng_condition_session_rotation_completed_create_from_payload(
- struct lttng_payload_view *view,
- struct lttng_condition **condition)
+ssize_t
+lttng_condition_session_rotation_completed_create_from_payload(struct lttng_payload_view *view,
+ struct lttng_condition **condition)
{
- return lttng_condition_session_rotation_create_from_payload(view,
- condition,
- LTTNG_CONDITION_TYPE_SESSION_ROTATION_COMPLETED);
+ return lttng_condition_session_rotation_create_from_payload(
+ view, condition, LTTNG_CONDITION_TYPE_SESSION_ROTATION_COMPLETED);
}
-static
-struct lttng_evaluation *lttng_evaluation_session_rotation_create(
- enum lttng_condition_type type, uint64_t id,
- struct lttng_trace_archive_location *location)
+static struct lttng_evaluation *lttng_evaluation_session_rotation_create(
+ enum lttng_condition_type type, uint64_t id, struct lttng_trace_archive_location *location)
{
struct lttng_evaluation_session_rotation *evaluation;
- evaluation = (lttng_evaluation_session_rotation *) zmalloc(sizeof(struct lttng_evaluation_session_rotation));
+ evaluation = zmalloc<lttng_evaluation_session_rotation>();
if (!evaluation) {
return NULL;
}
- memcpy(&evaluation->parent, &rotation_evaluation_template,
- sizeof(evaluation->parent));
+ memcpy(&evaluation->parent, &rotation_evaluation_template, sizeof(evaluation->parent));
lttng_evaluation_init(&evaluation->parent, type);
evaluation->id = id;
if (location) {
return &evaluation->parent;
}
-static
-ssize_t create_evaluation_from_payload(
- enum lttng_condition_type type,
- struct lttng_payload_view *view,
- struct lttng_evaluation **_evaluation)
+static ssize_t create_evaluation_from_payload(enum lttng_condition_type type,
+ struct lttng_payload_view *view,
+ struct lttng_evaluation **_evaluation)
{
ssize_t ret, size;
struct lttng_evaluation *evaluation = NULL;
struct lttng_trace_archive_location *location = NULL;
const struct lttng_evaluation_session_rotation_comm *comm;
- struct lttng_payload_view comm_view = lttng_payload_view_from_view(
- view, 0, sizeof(*comm));
+ struct lttng_payload_view comm_view = lttng_payload_view_from_view(view, 0, sizeof(*comm));
if (!lttng_payload_view_is_valid(&comm_view)) {
goto error;
size = sizeof(*comm);
if (comm->has_location) {
const struct lttng_buffer_view location_view =
- lttng_buffer_view_from_view(
- &view->buffer, sizeof(*comm), -1);
+ lttng_buffer_view_from_view(&view->buffer, sizeof(*comm), -1);
if (!lttng_buffer_view_is_valid(&location_view)) {
goto error;
}
- ret = lttng_trace_archive_location_create_from_buffer(
- &location_view, &location);
+ ret = lttng_trace_archive_location_create_from_buffer(&location_view, &location);
if (ret < 0) {
goto error;
}
size += ret;
}
- evaluation = lttng_evaluation_session_rotation_create(type, comm->id,
- location);
+ evaluation = lttng_evaluation_session_rotation_create(type, comm->id, location);
if (!evaluation) {
goto error;
}
return -1;
}
-static
-ssize_t lttng_evaluation_session_rotation_create_from_payload(
- enum lttng_condition_type type,
- struct lttng_payload_view *view,
- struct lttng_evaluation **_evaluation)
+static ssize_t
+lttng_evaluation_session_rotation_create_from_payload(enum lttng_condition_type type,
+ struct lttng_payload_view *view,
+ struct lttng_evaluation **_evaluation)
{
ssize_t ret;
struct lttng_evaluation *evaluation = NULL;
return ret;
}
-ssize_t lttng_evaluation_session_rotation_ongoing_create_from_payload(
- struct lttng_payload_view *view,
- struct lttng_evaluation **evaluation)
+ssize_t
+lttng_evaluation_session_rotation_ongoing_create_from_payload(struct lttng_payload_view *view,
+ struct lttng_evaluation **evaluation)
{
return lttng_evaluation_session_rotation_create_from_payload(
- LTTNG_CONDITION_TYPE_SESSION_ROTATION_ONGOING,
- view, evaluation);
+ LTTNG_CONDITION_TYPE_SESSION_ROTATION_ONGOING, view, evaluation);
}
ssize_t lttng_evaluation_session_rotation_completed_create_from_payload(
- struct lttng_payload_view *view,
- struct lttng_evaluation **evaluation)
+ struct lttng_payload_view *view, struct lttng_evaluation **evaluation)
{
return lttng_evaluation_session_rotation_create_from_payload(
- LTTNG_CONDITION_TYPE_SESSION_ROTATION_COMPLETED,
- view, evaluation);
+ LTTNG_CONDITION_TYPE_SESSION_ROTATION_COMPLETED, view, evaluation);
}
-struct lttng_evaluation *lttng_evaluation_session_rotation_ongoing_create(
- uint64_t id)
+struct lttng_evaluation *lttng_evaluation_session_rotation_ongoing_create(uint64_t id)
{
return lttng_evaluation_session_rotation_create(
- LTTNG_CONDITION_TYPE_SESSION_ROTATION_ONGOING, id,
- NULL);
+ LTTNG_CONDITION_TYPE_SESSION_ROTATION_ONGOING, id, NULL);
}
-struct lttng_evaluation *lttng_evaluation_session_rotation_completed_create(
- uint64_t id, struct lttng_trace_archive_location *location)
+struct lttng_evaluation *
+lttng_evaluation_session_rotation_completed_create(uint64_t id,
+ struct lttng_trace_archive_location *location)
{
return lttng_evaluation_session_rotation_create(
- LTTNG_CONDITION_TYPE_SESSION_ROTATION_COMPLETED, id,
- location);
+ LTTNG_CONDITION_TYPE_SESSION_ROTATION_COMPLETED, id, location);
}
enum lttng_condition_status
-lttng_condition_session_rotation_get_session_name(
- const struct lttng_condition *condition,
- const char **session_name)
+lttng_condition_session_rotation_get_session_name(const struct lttng_condition *condition,
+ const char **session_name)
{
struct lttng_condition_session_rotation *rotation;
enum lttng_condition_status status = LTTNG_CONDITION_STATUS_OK;
goto end;
}
- rotation = container_of(condition, struct lttng_condition_session_rotation,
- parent);
+ rotation = lttng::utils::container_of(condition, <tng_condition_session_rotation::parent);
if (!rotation->session_name) {
status = LTTNG_CONDITION_STATUS_UNSET;
goto end;
}
enum lttng_condition_status
-lttng_condition_session_rotation_set_session_name(
- struct lttng_condition *condition, const char *session_name)
+lttng_condition_session_rotation_set_session_name(struct lttng_condition *condition,
+ const char *session_name)
{
char *session_name_copy;
struct lttng_condition_session_rotation *rotation;
enum lttng_condition_status status = LTTNG_CONDITION_STATUS_OK;
- if (!condition || !is_rotation_condition(condition) ||
- !session_name || strlen(session_name) == 0) {
+ if (!condition || !is_rotation_condition(condition) || !session_name ||
+ strlen(session_name) == 0) {
status = LTTNG_CONDITION_STATUS_INVALID;
goto end;
}
- rotation = container_of(condition,
- struct lttng_condition_session_rotation, parent);
+ rotation = lttng::utils::container_of(condition, <tng_condition_session_rotation::parent);
session_name_copy = strdup(session_name);
if (!session_name_copy) {
status = LTTNG_CONDITION_STATUS_ERROR;
return status;
}
-static
-int lttng_evaluation_session_rotation_serialize(
- const struct lttng_evaluation *evaluation,
- struct lttng_payload *payload)
+static int lttng_evaluation_session_rotation_serialize(const struct lttng_evaluation *evaluation,
+ struct lttng_payload *payload)
{
int ret;
struct lttng_evaluation_session_rotation *rotation;
- struct lttng_evaluation_session_rotation_comm comm = { 0 };
+ struct lttng_evaluation_session_rotation_comm comm = {};
- rotation = container_of(evaluation,
- struct lttng_evaluation_session_rotation, parent);
+ rotation =
+ lttng::utils::container_of(evaluation, <tng_evaluation_session_rotation::parent);
comm.id = rotation->id;
comm.has_location = !!rotation->location;
- ret = lttng_dynamic_buffer_append(
- &payload->buffer, &comm, sizeof(comm));
+ ret = lttng_dynamic_buffer_append(&payload->buffer, &comm, sizeof(comm));
if (ret) {
goto end;
}
if (!rotation->location) {
goto end;
}
- ret = lttng_trace_archive_location_serialize(rotation->location,
- &payload->buffer);
+ ret = lttng_trace_archive_location_serialize(rotation->location, &payload->buffer);
end:
return ret;
}
-static
-void lttng_evaluation_session_rotation_destroy(
- struct lttng_evaluation *evaluation)
+static void lttng_evaluation_session_rotation_destroy(struct lttng_evaluation *evaluation)
{
struct lttng_evaluation_session_rotation *rotation;
- rotation = container_of(evaluation,
- struct lttng_evaluation_session_rotation, parent);
+ rotation =
+ lttng::utils::container_of(evaluation, <tng_evaluation_session_rotation::parent);
lttng_trace_archive_location_put(rotation->location);
free(rotation);
}
enum lttng_evaluation_status
-lttng_evaluation_session_rotation_get_id(
- const struct lttng_evaluation *evaluation, uint64_t *id)
+lttng_evaluation_session_rotation_get_id(const struct lttng_evaluation *evaluation, uint64_t *id)
{
const struct lttng_evaluation_session_rotation *rotation;
enum lttng_evaluation_status status = LTTNG_EVALUATION_STATUS_OK;
goto end;
}
- rotation = container_of(evaluation,
- struct lttng_evaluation_session_rotation, parent);
+ rotation =
+ lttng::utils::container_of(evaluation, <tng_evaluation_session_rotation::parent);
*id = rotation->id;
end:
return status;
* 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 struct lttng_trace_archive_location **location)
+enum lttng_evaluation_status lttng_evaluation_session_rotation_completed_get_location(
+ const struct lttng_evaluation *evaluation,
+ const struct lttng_trace_archive_location **location)
{
const struct lttng_evaluation_session_rotation *rotation;
enum lttng_evaluation_status status = LTTNG_EVALUATION_STATUS_OK;
if (!evaluation || !location ||
- evaluation->type != LTTNG_CONDITION_TYPE_SESSION_ROTATION_COMPLETED) {
+ evaluation->type != LTTNG_CONDITION_TYPE_SESSION_ROTATION_COMPLETED) {
status = LTTNG_EVALUATION_STATUS_INVALID;
goto end;
}
- rotation = container_of(evaluation,
- struct lttng_evaluation_session_rotation, parent);
+ rotation =
+ lttng::utils::container_of(evaluation, <tng_evaluation_session_rotation::parent);
*location = rotation->location;
end:
return status;
}
-static
-enum lttng_error_code lttng_condition_session_rotation_mi_serialize(
- const struct lttng_condition *condition,
- struct mi_writer *writer)
+static enum lttng_error_code
+lttng_condition_session_rotation_mi_serialize(const struct lttng_condition *condition,
+ struct mi_writer *writer)
{
int ret;
enum lttng_error_code ret_code;
switch (lttng_condition_get_type(condition)) {
case LTTNG_CONDITION_TYPE_SESSION_ROTATION_COMPLETED:
- type_element_str =
- mi_lttng_element_condition_session_rotation_completed;
+ type_element_str = mi_lttng_element_condition_session_rotation_completed;
break;
case LTTNG_CONDITION_TYPE_SESSION_ROTATION_ONGOING:
- type_element_str =
- mi_lttng_element_condition_session_rotation_ongoing;
+ type_element_str = mi_lttng_element_condition_session_rotation_ongoing;
break;
default:
abort();
break;
}
- status = lttng_condition_session_rotation_get_session_name(
- condition, &session_name);
+ status = lttng_condition_session_rotation_get_session_name(condition, &session_name);
LTTNG_ASSERT(status == LTTNG_CONDITION_STATUS_OK);
LTTNG_ASSERT(session_name);
/* Session name. */
ret = mi_lttng_writer_write_element_string(
- writer, mi_lttng_element_session_name, session_name);
+ writer, mi_lttng_element_session_name, session_name);
if (ret) {
goto mi_error;
}