From: Simon Marchi Date: Mon, 25 Nov 2019 19:20:31 +0000 (-0500) Subject: Move actions source files to src/common/actions directory X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=commitdiff_plain;h=03bb2358875cfca96394e78357c96baaa1e91efa Move actions source files to src/common/actions directory Since more actions will be added, group them under an "actions" directory. The files to be added are expected to have some pretty generic/overloaded names, such as start-session.c and snapshot.c, so having them under the actions directory make it clear that they implement the action described by the name. Change-Id: Ia47160dd75531eb9bcf13f875f4bc6caa2391d7b Signed-off-by: Simon Marchi Signed-off-by: Jérémie Galarneau --- diff --git a/src/common/Makefile.am b/src/common/Makefile.am index 7ca180bd3..7ec0f52a5 100644 --- a/src/common/Makefile.am +++ b/src/common/Makefile.am @@ -27,7 +27,8 @@ noinst_LTLIBRARIES = libcommon.la EXTRA_DIST = mi-lttng-4.0.xsd libcommon_la_SOURCES = \ - action.c \ + actions/action.c \ + actions/notify.c \ buffer-usage.c \ buffer-view.h buffer-view.c \ common.h \ @@ -48,7 +49,6 @@ libcommon_la_SOURCES = \ location.c \ mi-lttng.c mi-lttng.h \ notification.c \ - notify.c \ optional.h \ pipe.c pipe.h \ readwrite.c readwrite.h \ diff --git a/src/common/action.c b/src/common/action.c deleted file mode 100644 index dc72d37b4..000000000 --- a/src/common/action.c +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright (C) 2017 Jérémie Galarneau - * - * SPDX-License-Identifier: LGPL-2.1-only - * - */ - -#include -#include -#include -#include - -enum lttng_action_type lttng_action_get_type(struct lttng_action *action) -{ - return action ? action->type : LTTNG_ACTION_TYPE_UNKNOWN; -} - -LTTNG_HIDDEN -enum lttng_action_type lttng_action_get_type_const( - const struct lttng_action *action) -{ - return action->type; -} - -void lttng_action_destroy(struct lttng_action *action) -{ - if (!action) { - return; - } - - assert(action->destroy); - action->destroy(action); -} - -LTTNG_HIDDEN -bool lttng_action_validate(struct lttng_action *action) -{ - bool valid; - - if (!action) { - valid = false; - goto end; - } - - if (!action->validate) { - /* Sub-class guarantees that it can never be invalid. */ - valid = true; - goto end; - } - - valid = action->validate(action); -end: - return valid; -} - -LTTNG_HIDDEN -int lttng_action_serialize(struct lttng_action *action, - struct lttng_dynamic_buffer *buf) -{ - int ret; - struct lttng_action_comm action_comm = { - .action_type = (int8_t) action->type, - }; - - ret = lttng_dynamic_buffer_append(buf, &action_comm, - sizeof(action_comm)); - if (ret) { - goto end; - } - - ret = action->serialize(action, buf); - if (ret) { - goto end; - } -end: - return ret; -} - -LTTNG_HIDDEN -ssize_t lttng_action_create_from_buffer(const struct lttng_buffer_view *view, - struct lttng_action **_action) -{ - ssize_t ret, action_size = sizeof(struct lttng_action_comm); - struct lttng_action *action; - const struct lttng_action_comm *action_comm; - - if (!view || !_action) { - ret = -1; - goto end; - } - - action_comm = (const struct lttng_action_comm *) view->data; - DBG("Deserializing action from buffer"); - switch (action_comm->action_type) { - case LTTNG_ACTION_TYPE_NOTIFY: - action = lttng_action_notify_create(); - break; - default: - ret = -1; - goto end; - } - - if (!action) { - ret = -1; - goto end; - } - ret = action_size; - *_action = action; -end: - return ret; -} diff --git a/src/common/actions/action.c b/src/common/actions/action.c new file mode 100644 index 000000000..dc72d37b4 --- /dev/null +++ b/src/common/actions/action.c @@ -0,0 +1,111 @@ +/* + * Copyright (C) 2017 Jérémie Galarneau + * + * SPDX-License-Identifier: LGPL-2.1-only + * + */ + +#include +#include +#include +#include + +enum lttng_action_type lttng_action_get_type(struct lttng_action *action) +{ + return action ? action->type : LTTNG_ACTION_TYPE_UNKNOWN; +} + +LTTNG_HIDDEN +enum lttng_action_type lttng_action_get_type_const( + const struct lttng_action *action) +{ + return action->type; +} + +void lttng_action_destroy(struct lttng_action *action) +{ + if (!action) { + return; + } + + assert(action->destroy); + action->destroy(action); +} + +LTTNG_HIDDEN +bool lttng_action_validate(struct lttng_action *action) +{ + bool valid; + + if (!action) { + valid = false; + goto end; + } + + if (!action->validate) { + /* Sub-class guarantees that it can never be invalid. */ + valid = true; + goto end; + } + + valid = action->validate(action); +end: + return valid; +} + +LTTNG_HIDDEN +int lttng_action_serialize(struct lttng_action *action, + struct lttng_dynamic_buffer *buf) +{ + int ret; + struct lttng_action_comm action_comm = { + .action_type = (int8_t) action->type, + }; + + ret = lttng_dynamic_buffer_append(buf, &action_comm, + sizeof(action_comm)); + if (ret) { + goto end; + } + + ret = action->serialize(action, buf); + if (ret) { + goto end; + } +end: + return ret; +} + +LTTNG_HIDDEN +ssize_t lttng_action_create_from_buffer(const struct lttng_buffer_view *view, + struct lttng_action **_action) +{ + ssize_t ret, action_size = sizeof(struct lttng_action_comm); + struct lttng_action *action; + const struct lttng_action_comm *action_comm; + + if (!view || !_action) { + ret = -1; + goto end; + } + + action_comm = (const struct lttng_action_comm *) view->data; + DBG("Deserializing action from buffer"); + switch (action_comm->action_type) { + case LTTNG_ACTION_TYPE_NOTIFY: + action = lttng_action_notify_create(); + break; + default: + ret = -1; + goto end; + } + + if (!action) { + ret = -1; + goto end; + } + ret = action_size; + *_action = action; +end: + return ret; +} diff --git a/src/common/actions/notify.c b/src/common/actions/notify.c new file mode 100644 index 000000000..00d1a0ef4 --- /dev/null +++ b/src/common/actions/notify.c @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2017 Jérémie Galarneau + * + * SPDX-License-Identifier: LGPL-2.1-only + * + */ + +#include +#include +#include +#include + +static +void lttng_action_notify_destroy(struct lttng_action *action) +{ + free(action); +} + +static +int lttng_action_notify_serialize(struct lttng_action *action, + struct lttng_dynamic_buffer *buf) +{ + return 0; +} + +struct lttng_action *lttng_action_notify_create(void) +{ + struct lttng_action_notify *notify; + + notify = zmalloc(sizeof(struct lttng_action_notify)); + if (!notify) { + goto end; + } + + notify->parent.type = LTTNG_ACTION_TYPE_NOTIFY; + notify->parent.serialize = lttng_action_notify_serialize; + notify->parent.destroy = lttng_action_notify_destroy; +end: + return ¬ify->parent; +} diff --git a/src/common/notify.c b/src/common/notify.c deleted file mode 100644 index 00d1a0ef4..000000000 --- a/src/common/notify.c +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (C) 2017 Jérémie Galarneau - * - * SPDX-License-Identifier: LGPL-2.1-only - * - */ - -#include -#include -#include -#include - -static -void lttng_action_notify_destroy(struct lttng_action *action) -{ - free(action); -} - -static -int lttng_action_notify_serialize(struct lttng_action *action, - struct lttng_dynamic_buffer *buf) -{ - return 0; -} - -struct lttng_action *lttng_action_notify_create(void) -{ - struct lttng_action_notify *notify; - - notify = zmalloc(sizeof(struct lttng_action_notify)); - if (!notify) { - goto end; - } - - notify->parent.type = LTTNG_ACTION_TYPE_NOTIFY; - notify->parent.serialize = lttng_action_notify_serialize; - notify->parent.destroy = lttng_action_notify_destroy; -end: - return ¬ify->parent; -}