X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fcommon%2Fconditions%2Fsession-consumed-size.c;h=2f95bd82ac14a517c649d1eac529960464ae6733;hb=ca806b0b247f;hp=e147d1e5ffcf0536d8e7b32595b39ce9be0f042e;hpb=ae20d1bd206b317393846accdc45082d7c37b571;p=lttng-tools.git diff --git a/src/common/conditions/session-consumed-size.c b/src/common/conditions/session-consumed-size.c index e147d1e5f..2f95bd82a 100644 --- a/src/common/conditions/session-consumed-size.c +++ b/src/common/conditions/session-consumed-size.c @@ -5,14 +5,14 @@ * */ +#include +#include +#include +#include #include #include #include -#include -#include -#include #include -#include #include #define IS_CONSUMED_SIZE_CONDITION(condition) ( \ @@ -127,8 +127,8 @@ bool lttng_condition_session_consumed_size_is_equal(const struct lttng_condition } } - assert(a->session_name); - assert(b->session_name); + LTTNG_ASSERT(a->session_name); + LTTNG_ASSERT(b->session_name); if (strcmp(a->session_name, b->session_name)) { goto end; } @@ -138,6 +138,67 @@ end: return is_equal; } +static +enum lttng_error_code lttng_condition_session_consumed_size_mi_serialize( + const struct lttng_condition *condition, + struct mi_writer *writer) +{ + int ret; + enum lttng_error_code ret_code; + enum lttng_condition_status status; + const char *session_name = NULL; + uint64_t threshold_bytes; + + LTTNG_ASSERT(condition); + LTTNG_ASSERT(writer); + LTTNG_ASSERT(IS_CONSUMED_SIZE_CONDITION(condition)); + + status = lttng_condition_session_consumed_size_get_session_name( + condition, &session_name); + LTTNG_ASSERT(status == LTTNG_CONDITION_STATUS_OK); + LTTNG_ASSERT(session_name); + + status = lttng_condition_session_consumed_size_get_threshold( + condition, &threshold_bytes); + LTTNG_ASSERT(status == LTTNG_CONDITION_STATUS_OK); + + /* Open condition session consumed size element. */ + ret = mi_lttng_writer_open_element(writer, + mi_lttng_element_condition_session_consumed_size); + 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; + } + + /* Threshold in bytes. */ + ret = mi_lttng_writer_write_element_unsigned_int(writer, + mi_lttng_element_condition_threshold_bytes, + threshold_bytes); + if (ret) { + goto mi_error; + } + + /* Close condition session consumed size 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_condition *lttng_condition_session_consumed_size_create(void) { struct lttng_condition_session_consumed_size *condition; @@ -152,6 +213,7 @@ struct lttng_condition *lttng_condition_session_consumed_size_create(void) condition->parent.serialize = lttng_condition_session_consumed_size_serialize; condition->parent.equal = lttng_condition_session_consumed_size_is_equal; condition->parent.destroy = lttng_condition_session_consumed_size_destroy; + condition->parent.mi_serialize = lttng_condition_session_consumed_size_mi_serialize; return &condition->parent; } @@ -224,7 +286,6 @@ end: return ret; } -LTTNG_HIDDEN ssize_t lttng_condition_session_consumed_size_create_from_payload( struct lttng_payload_view *view, struct lttng_condition **_condition) @@ -268,7 +329,6 @@ end: return evaluation; } -LTTNG_HIDDEN ssize_t lttng_evaluation_session_consumed_size_create_from_payload( struct lttng_payload_view *view, struct lttng_evaluation **_evaluation) @@ -419,7 +479,6 @@ void lttng_evaluation_session_consumed_size_destroy( free(consumed); } -LTTNG_HIDDEN struct lttng_evaluation *lttng_evaluation_session_consumed_size_create( uint64_t consumed) {