X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Factions%2Frotate-session.c;h=1eddacaea5b3fdd23db7eec64af65f6e867318d6;hp=c8dadd1191fa095565cb97603bfb1c49f1199f89;hb=6a751b953a43c566b74818ec6325db0978e16c66;hpb=1aa9c49c60b7d7370ceafc3ac076de423de22b7f diff --git a/src/common/actions/rotate-session.c b/src/common/actions/rotate-session.c index c8dadd119..1eddacaea 100644 --- a/src/common/actions/rotate-session.c +++ b/src/common/actions/rotate-session.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include @@ -230,6 +231,62 @@ end: return consumed_len; } +static enum lttng_error_code lttng_action_rotate_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; + + assert(action); + assert(IS_ROTATE_SESSION_ACTION(action)); + + status = lttng_action_rotate_session_get_session_name( + action, &session_name); + assert(status == LTTNG_ACTION_STATUS_OK); + assert(session_name != NULL); + + status = lttng_action_notify_get_rate_policy(action, &policy); + assert(status == LTTNG_ACTION_STATUS_OK); + assert(policy != NULL); + + /* Open action rotate session element. */ + ret = mi_lttng_writer_open_element( + writer, mi_lttng_element_action_rotate_session); + if (ret) { + goto mi_error; + } + + /* Session name. */ + ret = mi_lttng_writer_write_element_string( + writer, mi_lttng_element_session_name, session_name); + if (ret) { + goto mi_error; + } + + /* Rate policy. */ + ret_code = lttng_rate_policy_mi_serialize(policy, writer); + if (ret_code != LTTNG_OK) { + goto end; + } + + /* Close action rotate session element. */ + ret = mi_lttng_writer_close_element(writer); + if (ret) { + goto mi_error; + } + + ret_code = LTTNG_OK; + goto end; + +mi_error: + ret_code = LTTNG_ERR_MI_IO_FAIL; +end: + return ret_code; +} + struct lttng_action *lttng_action_rotate_session_create(void) { struct lttng_action *action = NULL; @@ -253,7 +310,8 @@ struct lttng_action *lttng_action_rotate_session_create(void) lttng_action_rotate_session_is_equal, lttng_action_rotate_session_destroy, lttng_action_rotate_session_internal_get_rate_policy, - lttng_action_generic_add_error_query_results); + lttng_action_generic_add_error_query_results, + lttng_action_rotate_session_mi_serialize); status = lttng_action_rotate_session_set_rate_policy(action, policy); if (status != LTTNG_ACTION_STATUS_OK) {