#ifndef LTTNG_CONDITION_INTERNAL_H
#define LTTNG_CONDITION_INTERNAL_H
-#include <lttng/condition/condition.h>
#include <common/macros.h>
-#include <common/sessiond-comm/payload-view.h>
-#include <common/sessiond-comm/payload.h>
+#include <common/payload-view.h>
+#include <common/payload.h>
+#include <lttng/condition/condition.h>
+#include <lttng/lttng-error.h>
#include <stdbool.h>
-#include <urcu/list.h>
#include <stdint.h>
#include <sys/types.h>
+#include <urcu/list.h>
+#include <urcu/ref.h>
+
+struct mi_writer;
+struct mi_lttng_error_query_callbacks;
+struct lttng_trigger;
typedef void (*condition_destroy_cb)(struct lttng_condition *condition);
typedef bool (*condition_validate_cb)(const struct lttng_condition *condition);
typedef ssize_t (*condition_create_from_payload_cb)(
struct lttng_payload_view *view,
struct lttng_condition **condition);
+typedef enum lttng_error_code (*condition_mi_serialize_cb)(
+ const struct lttng_condition *condition,
+ struct mi_writer *writer);
struct lttng_condition {
+ /* Reference counting is only exposed to internal users. */
+ struct urcu_ref ref;
enum lttng_condition_type type;
condition_validate_cb validate;
condition_serialize_cb serialize;
condition_equal_cb equal;
condition_destroy_cb destroy;
+ condition_mi_serialize_cb mi_serialize;
};
struct lttng_condition_comm {
char payload[];
};
+LTTNG_HIDDEN
+void lttng_condition_get(struct lttng_condition *condition);
+
+LTTNG_HIDDEN
+void lttng_condition_put(struct lttng_condition *condition);
+
LTTNG_HIDDEN
void lttng_condition_init(struct lttng_condition *condition,
enum lttng_condition_type type);
bool lttng_condition_is_equal(const struct lttng_condition *a,
const struct lttng_condition *b);
+LTTNG_HIDDEN
+enum lttng_error_code lttng_condition_mi_serialize(
+ const struct lttng_trigger *trigger,
+ const struct lttng_condition *condition,
+ struct mi_writer *writer,
+ const struct mi_lttng_error_query_callbacks
+ *error_query_callbacks);
+
+LTTNG_HIDDEN
+const char *lttng_condition_type_str(enum lttng_condition_type type);
+
#endif /* LTTNG_CONDITION_INTERNAL_H */