X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Fevaluation.c;h=e239193025f6e7abfe64273e92a1b199288e84ef;hp=c6243d232e82690ab9ca4a39cea3ed4aff1de974;hb=9b63a4aa352c184984395c097f86d5e54c295012;hpb=a58c490f0bff52a73717d31d04d1472629180de2 diff --git a/src/common/evaluation.c b/src/common/evaluation.c index c6243d232..e23919302 100644 --- a/src/common/evaluation.c +++ b/src/common/evaluation.c @@ -17,34 +17,41 @@ #include #include +#include +#include #include #include #include #include LTTNG_HIDDEN -ssize_t lttng_evaluation_serialize(struct lttng_evaluation *evaluation, - char *buf) +void lttng_evaluation_init(struct lttng_evaluation *evaluation, + enum lttng_condition_type type) { - ssize_t ret, offset = 0; - struct lttng_evaluation_comm evaluation_comm; + evaluation->type = type; +} + +LTTNG_HIDDEN +int lttng_evaluation_serialize(const struct lttng_evaluation *evaluation, + struct lttng_dynamic_buffer *buf) +{ + int ret; + struct lttng_evaluation_comm evaluation_comm = { + .type = (int8_t) evaluation->type + }; - evaluation_comm.type = (int8_t) evaluation->type; - if (buf) { - memcpy(buf, &evaluation_comm, sizeof(evaluation_comm)); + ret = lttng_dynamic_buffer_append(buf, &evaluation_comm, + sizeof(evaluation_comm)); + if (ret) { + goto end; } - offset += sizeof(evaluation_comm); if (evaluation->serialize) { - ret = evaluation->serialize(evaluation, - buf ? (buf + offset) : NULL); - if (ret < 0) { + ret = evaluation->serialize(evaluation, buf); + if (ret) { goto end; } - offset += ret; } - - ret = offset; end: return ret; } @@ -85,6 +92,30 @@ ssize_t lttng_evaluation_create_from_buffer( } evaluation_size += ret; break; + case LTTNG_CONDITION_TYPE_SESSION_CONSUMED_SIZE: + ret = lttng_evaluation_session_consumed_size_create_from_buffer( + &evaluation_view, evaluation); + if (ret < 0) { + goto end; + } + evaluation_size += ret; + break; + case LTTNG_CONDITION_TYPE_SESSION_ROTATION_ONGOING: + ret = lttng_evaluation_session_rotation_ongoing_create_from_buffer( + &evaluation_view, evaluation); + if (ret < 0) { + goto end; + } + evaluation_size += ret; + break; + case LTTNG_CONDITION_TYPE_SESSION_ROTATION_COMPLETED: + ret = lttng_evaluation_session_rotation_completed_create_from_buffer( + &evaluation_view, evaluation); + if (ret < 0) { + goto end; + } + evaluation_size += ret; + break; default: ERR("Attempted to create evaluation of unknown type (%i)", (int) evaluation_comm->type);