From: Vsevolod Stakhov Date: Sat, 29 Jul 2017 14:08:03 +0000 (+0100) Subject: [Minor] Add auxiliary functions for symbols cache X-Git-Tag: 1.7.0~794 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5a5db3970743bbee42c42d04a663fc3322acee77;p=thirdparty%2Frspamd.git [Minor] Add auxiliary functions for symbols cache --- diff --git a/src/libserver/symbols_cache.c b/src/libserver/symbols_cache.c index 0728d0ee66..46f1b3fc62 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 dedcda4e61..f717b39b9e 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