#include <common/error.hpp>
#include <common/macros.hpp>
#include <common/mi-lttng.hpp>
+
#include <lttng/action/action-internal.hpp>
#include <lttng/action/rate-policy-internal.hpp>
#include <lttng/action/rate-policy.h>
#define IS_STOP_SESSION_ACTION(action) \
(lttng_action_get_type(action) == LTTNG_ACTION_TYPE_STOP_SESSION)
+namespace {
struct lttng_action_stop_session {
struct lttng_action parent;
*/
char data[];
} LTTNG_PACKED;
+} /* namespace */
static const struct lttng_rate_policy *
-lttng_action_stop_session_internal_get_rate_policy(
- const struct lttng_action *action);
+lttng_action_stop_session_internal_get_rate_policy(const struct lttng_action *action);
-static struct lttng_action_stop_session *action_stop_session_from_action(
- struct lttng_action *action)
+static struct lttng_action_stop_session *
+action_stop_session_from_action(struct lttng_action *action)
{
LTTNG_ASSERT(action);
- return container_of(action, struct lttng_action_stop_session, parent);
+ return lttng::utils::container_of(action, <tng_action_stop_session::parent);
}
static const struct lttng_action_stop_session *
{
LTTNG_ASSERT(action);
- return container_of(action, struct lttng_action_stop_session, parent);
+ return lttng::utils::container_of(action, <tng_action_stop_session::parent);
}
static bool lttng_action_stop_session_validate(struct lttng_action *action)
action_stop_session = action_stop_session_from_action(action);
/* A non-empty session name is mandatory. */
- if (!action_stop_session->session_name ||
- strlen(action_stop_session->session_name) == 0) {
+ if (!action_stop_session->session_name || strlen(action_stop_session->session_name) == 0) {
valid = false;
goto end;
}
return valid;
}
-static bool lttng_action_stop_session_is_equal(
- const struct lttng_action *_a, const struct lttng_action *_b)
+static bool lttng_action_stop_session_is_equal(const struct lttng_action *_a,
+ const struct lttng_action *_b)
{
bool is_equal = false;
const struct lttng_action_stop_session *a, *b;
return is_equal;
}
-static int lttng_action_stop_session_serialize(
- struct lttng_action *action, struct lttng_payload *payload)
+static int lttng_action_stop_session_serialize(struct lttng_action *action,
+ struct lttng_payload *payload)
{
struct lttng_action_stop_session *action_stop_session;
struct lttng_action_stop_session_comm comm;
LTTNG_ASSERT(action_stop_session->session_name);
- DBG("Serializing stop session action: session-name: %s",
- action_stop_session->session_name);
+ DBG("Serializing stop session action: session-name: %s", action_stop_session->session_name);
session_name_len = strlen(action_stop_session->session_name) + 1;
comm.session_name_len = session_name_len;
- ret = lttng_dynamic_buffer_append(
- &payload->buffer, &comm, sizeof(comm));
+ ret = lttng_dynamic_buffer_append(&payload->buffer, &comm, sizeof(comm));
if (ret) {
ret = -1;
goto end;
}
- ret = lttng_dynamic_buffer_append(&payload->buffer,
- action_stop_session->session_name, session_name_len);
+ ret = lttng_dynamic_buffer_append(
+ &payload->buffer, action_stop_session->session_name, session_name_len);
if (ret) {
ret = -1;
goto end;
return;
}
-ssize_t lttng_action_stop_session_create_from_payload(
- struct lttng_payload_view *view,
- struct lttng_action **p_action)
+ssize_t lttng_action_stop_session_create_from_payload(struct lttng_payload_view *view,
+ struct lttng_action **p_action)
{
ssize_t consumed_len, ret;
const struct lttng_action_stop_session_comm *comm;
const char *session_name;
- struct lttng_action *action = NULL;
+ struct lttng_action *action = nullptr;
enum lttng_action_status status;
- struct lttng_rate_policy *policy = NULL;
+ struct lttng_rate_policy *policy = nullptr;
comm = (typeof(comm)) view->buffer.data;
session_name = (const char *) &comm->data;
/* Session name. */
if (!lttng_buffer_view_contains_string(
- &view->buffer, session_name, comm->session_name_len)) {
+ &view->buffer, session_name, comm->session_name_len)) {
consumed_len = -1;
goto end;
}
/* Rate policy. */
{
struct lttng_payload_view policy_view =
- lttng_payload_view_from_view(
- view, consumed_len, -1);
- ret = lttng_rate_policy_create_from_payload(
- &policy_view, &policy);
+ lttng_payload_view_from_view(view, consumed_len, -1);
+ ret = lttng_rate_policy_create_from_payload(&policy_view, &policy);
if (ret < 0) {
consumed_len = -1;
goto end;
goto end;
}
- status = lttng_action_stop_session_set_session_name(
- action, session_name);
+ status = lttng_action_stop_session_set_session_name(action, session_name);
if (status != LTTNG_ACTION_STATUS_OK) {
consumed_len = -1;
goto end;
}
*p_action = action;
- action = NULL;
+ action = nullptr;
end:
lttng_rate_policy_destroy(policy);
return consumed_len;
}
-static enum lttng_error_code lttng_action_stop_session_mi_serialize(
- const struct lttng_action *action, struct mi_writer *writer)
+static enum lttng_error_code
+lttng_action_stop_session_mi_serialize(const struct lttng_action *action, struct mi_writer *writer)
{
int ret;
enum lttng_error_code ret_code;
enum lttng_action_status status;
- const char *session_name = NULL;
- const struct lttng_rate_policy *policy = NULL;
+ const char *session_name = nullptr;
+ const struct lttng_rate_policy *policy = nullptr;
LTTNG_ASSERT(action);
LTTNG_ASSERT(IS_STOP_SESSION_ACTION(action));
- status = lttng_action_stop_session_get_session_name(
- action, &session_name);
+ status = lttng_action_stop_session_get_session_name(action, &session_name);
LTTNG_ASSERT(status == LTTNG_ACTION_STATUS_OK);
- LTTNG_ASSERT(session_name != NULL);
+ LTTNG_ASSERT(session_name != nullptr);
status = lttng_action_stop_session_get_rate_policy(action, &policy);
LTTNG_ASSERT(status == LTTNG_ACTION_STATUS_OK);
- LTTNG_ASSERT(policy != NULL);
+ LTTNG_ASSERT(policy != nullptr);
/* Open action stop session. */
- ret = mi_lttng_writer_open_element(
- writer, mi_lttng_element_action_start_session);
+ ret = mi_lttng_writer_open_element(writer, mi_lttng_element_action_start_session);
if (ret) {
goto mi_error;
}
/* 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;
}
struct lttng_action *lttng_action_stop_session_create(void)
{
- struct lttng_action *action = NULL;
- struct lttng_rate_policy *policy = NULL;
+ struct lttng_action_stop_session *action_stop = nullptr;
+ struct lttng_rate_policy *policy = nullptr;
enum lttng_action_status status;
/* Create a every N = 1 rate policy. */
goto end;
}
- action = (lttng_action *) zmalloc(sizeof(struct lttng_action_stop_session));
- if (!action) {
+ action_stop = zmalloc<lttng_action_stop_session>();
+ if (!action_stop) {
goto end;
}
- lttng_action_init(action, LTTNG_ACTION_TYPE_STOP_SESSION,
- lttng_action_stop_session_validate,
- lttng_action_stop_session_serialize,
- lttng_action_stop_session_is_equal,
- lttng_action_stop_session_destroy,
- lttng_action_stop_session_internal_get_rate_policy,
- lttng_action_generic_add_error_query_results,
- lttng_action_stop_session_mi_serialize);
-
- status = lttng_action_stop_session_set_rate_policy(action, policy);
+ lttng_action_init(&action_stop->parent,
+ LTTNG_ACTION_TYPE_STOP_SESSION,
+ lttng_action_stop_session_validate,
+ lttng_action_stop_session_serialize,
+ lttng_action_stop_session_is_equal,
+ lttng_action_stop_session_destroy,
+ lttng_action_stop_session_internal_get_rate_policy,
+ lttng_action_generic_add_error_query_results,
+ lttng_action_stop_session_mi_serialize);
+
+ status = lttng_action_stop_session_set_rate_policy(&action_stop->parent, policy);
if (status != LTTNG_ACTION_STATUS_OK) {
- free(action);
- action = NULL;
+ lttng_action_destroy(&action_stop->parent);
+ action_stop = nullptr;
goto end;
}
end:
lttng_rate_policy_destroy(policy);
- return action;
+ return &action_stop->parent;
}
-enum lttng_action_status lttng_action_stop_session_set_session_name(
- struct lttng_action *action, const char *session_name)
+enum lttng_action_status lttng_action_stop_session_set_session_name(struct lttng_action *action,
+ const char *session_name)
{
struct lttng_action_stop_session *action_stop_session;
enum lttng_action_status status;
if (!action || !IS_STOP_SESSION_ACTION(action) || !session_name ||
- strlen(session_name) == 0) {
+ strlen(session_name) == 0) {
status = LTTNG_ACTION_STATUS_INVALID;
goto end;
}
return status;
}
-enum lttng_action_status lttng_action_stop_session_get_session_name(
- const struct lttng_action *action, const char **session_name)
+enum lttng_action_status
+lttng_action_stop_session_get_session_name(const struct lttng_action *action,
+ const char **session_name)
{
const struct lttng_action_stop_session *action_stop_session;
enum lttng_action_status status;
return status;
}
-enum lttng_action_status lttng_action_stop_session_set_rate_policy(
- struct lttng_action *action,
- const struct lttng_rate_policy *policy)
+enum lttng_action_status
+lttng_action_stop_session_set_rate_policy(struct lttng_action *action,
+ const struct lttng_rate_policy *policy)
{
enum lttng_action_status status;
struct lttng_action_stop_session *stop_session_action;
- struct lttng_rate_policy *copy = NULL;
+ struct lttng_rate_policy *copy = nullptr;
if (!action || !policy || !IS_STOP_SESSION_ACTION(action)) {
status = LTTNG_ACTION_STATUS_INVALID;
stop_session_action->policy = copy;
status = LTTNG_ACTION_STATUS_OK;
- copy = NULL;
+ copy = nullptr;
end:
lttng_rate_policy_destroy(copy);
return status;
}
-enum lttng_action_status lttng_action_stop_session_get_rate_policy(
- const struct lttng_action *action,
- const struct lttng_rate_policy **policy)
+enum lttng_action_status
+lttng_action_stop_session_get_rate_policy(const struct lttng_action *action,
+ const struct lttng_rate_policy **policy)
{
enum lttng_action_status status;
const struct lttng_action_stop_session *stop_session_action;
}
static const struct lttng_rate_policy *
-lttng_action_stop_session_internal_get_rate_policy(
- const struct lttng_action *action)
+lttng_action_stop_session_internal_get_rate_policy(const struct lttng_action *action)
{
const struct lttng_action_stop_session *_action;
_action = action_stop_session_from_action_const(action);