#include <lttng/condition/condition-internal.h>
#include <lttng/condition/buffer-usage-internal.h>
+#include <lttng/condition/session-consumed-size-internal.h>
+#include <lttng/condition/session-rotation-internal.h>
#include <common/macros.h>
#include <common/error.h>
#include <common/dynamic-buffer.h>
}
LTTNG_HIDDEN
-ssize_t lttng_condition_serialize(const struct lttng_condition *condition,
- char *buf)
+int lttng_condition_serialize(const struct lttng_condition *condition,
+ struct lttng_dynamic_buffer *buf)
{
- ssize_t ret, condition_size;
- struct lttng_condition_comm condition_comm = {
- .condition_type = (int8_t) (condition ?
- condition->type : LTTNG_CONDITION_TYPE_UNKNOWN)
- };
+ int ret;
+ struct lttng_condition_comm condition_comm = { 0 };
if (!condition) {
ret = -1;
goto end;
}
- ret = sizeof(struct lttng_condition_comm);
- if (buf) {
- memcpy(buf, &condition_comm, ret);
- buf += ret;
+ condition_comm.condition_type = (int8_t) condition->type;
+
+ ret = lttng_dynamic_buffer_append(buf, &condition_comm,
+ sizeof(condition_comm));
+ if (ret) {
+ goto end;
}
- condition_size = condition->serialize(condition, buf);
- if (condition_size < 0) {
- ret = condition_size;
+ ret = condition->serialize(condition, buf);
+ if (ret) {
goto end;
}
- ret += condition_size;
end:
return ret;
}
goto end;
}
+ if (a == b) {
+ is_equal = true;
+ goto end;
+ }
+
is_equal = a->equal ? a->equal(a, b) : true;
end:
return is_equal;
case LTTNG_CONDITION_TYPE_BUFFER_USAGE_HIGH:
create_from_buffer = lttng_condition_buffer_usage_high_create_from_buffer;
break;
+ case LTTNG_CONDITION_TYPE_SESSION_CONSUMED_SIZE:
+ create_from_buffer = lttng_condition_session_consumed_size_create_from_buffer;
+ break;
+ case LTTNG_CONDITION_TYPE_SESSION_ROTATION_ONGOING:
+ create_from_buffer = lttng_condition_session_rotation_ongoing_create_from_buffer;
+ break;
+ case LTTNG_CONDITION_TYPE_SESSION_ROTATION_COMPLETED:
+ create_from_buffer = lttng_condition_session_rotation_completed_create_from_buffer;
+ break;
default:
ERR("Attempted to create condition of unknown type (%i)",
(int) condition_comm->condition_type);