From 5a5db3970743bbee42c42d04a663fc3322acee77 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Sat, 29 Jul 2017 15:08:03 +0100 Subject: [PATCH] [Minor] Add auxiliary functions for symbols cache --- src/libserver/symbols_cache.c | 13 +++++++++++++ src/libserver/symbols_cache.h | 12 ++++++++++++ 2 files changed, 25 insertions(+) diff --git a/src/libserver/symbols_cache.c b/src/libserver/symbols_cache.c index 0728d0ee6..46f1b3fc6 100644 --- a/src/libserver/symbols_cache.c +++ b/src/libserver/symbols_cache.c @@ -2462,3 +2462,16 @@ rspamd_symbols_cache_is_symbol_enabled (struct rspamd_task *task, return ret; } + +void +rspamd_symbols_cache_foreach (struct symbols_cache *cache, + void (*func)(gint , const gchar *, gint , gpointer ), + gpointer ud) +{ + guint i; + struct cache_item *item; + + PTR_ARRAY_FOREACH (cache->items_by_id, i, item) { + func (item->id, item->symbol, item->type, ud); + } +} diff --git a/src/libserver/symbols_cache.h b/src/libserver/symbols_cache.h index dedcda4e6..f717b39b9 100644 --- a/src/libserver/symbols_cache.h +++ b/src/libserver/symbols_cache.h @@ -40,6 +40,7 @@ enum rspamd_symbol_type { SYMBOL_TYPE_EMPTY = (1 << 8), /* Allow execution on empty tasks */ SYMBOL_TYPE_PREFILTER = (1 << 9), SYMBOL_TYPE_POSTFILTER = (1 << 10), + SYMBOL_TYPE_NONSTAT = (1 << 11), /* Skip as statistical symbol */ }; /** @@ -290,4 +291,15 @@ guint64 rspamd_symbols_cache_get_cksum (struct symbols_cache *cache); */ gboolean rspamd_symbols_cache_is_symbol_enabled (struct rspamd_task *task, struct symbols_cache *cache, const gchar *symbol); +/** + * Process specific function for each cache element (in order they are added) + * @param cache + * @param func + * @param ud + */ +void rspamd_symbols_cache_foreach (struct symbols_cache *cache, + void (*func)(gint /* id */, const gchar * /* name */, + gint /* flags */, gpointer /* userdata */), + gpointer ud); + #endif -- 2.39.5