From fcacfde02a4800aba5028dfeea624f9565064ff0 Mon Sep 17 00:00:00 2001 From: "sergey.kitov" Date: Tue, 20 Apr 2021 17:06:26 +0300 Subject: [PATCH] lib: Add function removing queries from event_filter --- src/lib/event-filter.c | 16 ++++++++++++++++ src/lib/event-filter.h | 5 +++++ 2 files changed, 21 insertions(+) diff --git a/src/lib/event-filter.c b/src/lib/event-filter.c index f720118dad..88a998a6ee 100644 --- a/src/lib/event-filter.c +++ b/src/lib/event-filter.c @@ -266,6 +266,22 @@ event_filter_merge_with_context_internal(struct event_filter *dest, } T_END; } +bool event_filter_remove_queries_with_context(struct event_filter *filter, + void *context) +{ + const struct event_filter_query_internal *int_query; + unsigned int idx; + + array_foreach(&filter->queries, int_query) { + if (int_query->context == context) { + idx = array_foreach_idx(&filter->queries, int_query); + array_delete(&filter->queries, idx, 1); + return TRUE; + } + } + return FALSE; +} + void event_filter_merge(struct event_filter *dest, const struct event_filter *src) { diff --git a/src/lib/event-filter.h b/src/lib/event-filter.h index de2d7c7899..0a55e05755 100644 --- a/src/lib/event-filter.h +++ b/src/lib/event-filter.h @@ -22,6 +22,11 @@ void event_filter_merge_with_context(struct event_filter *dest, const struct event_filter *src, void *new_context); +/* Remove query with given context from filter. + Returns TRUE if query was removed, otherwise FALSE. */ +bool event_filter_remove_queries_with_context(struct event_filter *filter, + void *context); + /* Export the filter into a string. The context pointers aren't exported. */ void event_filter_export(struct event_filter *filter, string_t *dest); /* Add queries to the filter from the given string. The string is expected to -- 2.47.3