*
*/
-#include <common/error.h>
-#include <common/macros.h>
-#include <common/mi-lttng.h>
-#include <common/payload-view.h>
-#include <common/payload.h>
-#include <common/snapshot.h>
+#include <common/error.hpp>
+#include <common/macros.hpp>
+#include <common/mi-lttng.hpp>
+#include <common/payload-view.hpp>
+#include <common/payload.hpp>
+#include <common/snapshot.hpp>
#include <inttypes.h>
-#include <lttng/action/action-internal.h>
-#include <lttng/action/rate-policy-internal.h>
+#include <lttng/action/action-internal.hpp>
+#include <lttng/action/rate-policy-internal.hpp>
#include <lttng/action/rate-policy.h>
-#include <lttng/action/snapshot-session-internal.h>
+#include <lttng/action/snapshot-session-internal.hpp>
#include <lttng/action/snapshot-session.h>
-#include <lttng/snapshot-internal.h>
+#include <lttng/snapshot-internal.hpp>
#include <lttng/snapshot.h>
#define IS_SNAPSHOT_SESSION_ACTION(action) \
(lttng_action_get_type(action) == LTTNG_ACTION_TYPE_SNAPSHOT_SESSION)
+namespace {
struct lttng_action_snapshot_session {
struct lttng_action parent;
*/
char data[];
} LTTNG_PACKED;
+} /* namespace */
static const struct lttng_rate_policy *
lttng_action_snapshot_session_internal_get_rate_policy(
{
LTTNG_ASSERT(action);
- return container_of(
- action, struct lttng_action_snapshot_session, parent);
+ return lttng::utils::container_of(
+ action, <tng_action_snapshot_session::parent);
}
static const struct lttng_action_snapshot_session *
{
LTTNG_ASSERT(action);
- return container_of(
- action, struct lttng_action_snapshot_session, parent);
+ return lttng::utils::container_of(
+ action, <tng_action_snapshot_session::parent);
}
static bool lttng_action_snapshot_session_validate(struct lttng_action *action)
struct lttng_action *lttng_action_snapshot_session_create(void)
{
- struct lttng_action *action = NULL;
+ struct lttng_action_snapshot_session *action_snapshot = NULL;
struct lttng_rate_policy *policy = NULL;
enum lttng_action_status status;
goto end;
}
- action = (lttng_action *) zmalloc(sizeof(struct lttng_action_snapshot_session));
- if (!action) {
+ action_snapshot = zmalloc<lttng_action_snapshot_session>();
+ if (!action_snapshot) {
goto end;
}
- lttng_action_init(action, LTTNG_ACTION_TYPE_SNAPSHOT_SESSION,
+ lttng_action_init(&action_snapshot->parent,
+ LTTNG_ACTION_TYPE_SNAPSHOT_SESSION,
lttng_action_snapshot_session_validate,
lttng_action_snapshot_session_serialize,
lttng_action_snapshot_session_is_equal,
lttng_action_generic_add_error_query_results,
lttng_action_snapshot_session_mi_serialize);
- status = lttng_action_snapshot_session_set_rate_policy(action, policy);
+ status = lttng_action_snapshot_session_set_rate_policy(
+ &action_snapshot->parent, policy);
if (status != LTTNG_ACTION_STATUS_OK) {
- free(action);
- action = NULL;
+ lttng_action_destroy(&action_snapshot->parent);
+ action_snapshot = NULL;
goto end;
}
end:
lttng_rate_policy_destroy(policy);
- return action;
+ return action_snapshot ? &action_snapshot->parent : nullptr;
}
enum lttng_action_status lttng_action_snapshot_session_set_session_name(