From 84dca6933525343089fc15d008ecca8a57e4df55 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Tue, 26 May 2015 18:17:35 +0100 Subject: [PATCH] Rework structure. --- src/libserver/symbols_cache.c | 49 +++++++---------------------------- src/libserver/symbols_cache.h | 3 ++- 2 files changed, 12 insertions(+), 40 deletions(-) diff --git a/src/libserver/symbols_cache.c b/src/libserver/symbols_cache.c index d673ee017..8d37a9ead 100644 --- a/src/libserver/symbols_cache.c +++ b/src/libserver/symbols_cache.c @@ -50,71 +50,42 @@ struct rspamd_symbols_cache_header { }; struct symbols_cache { - /* Normal cache items */ - GList *static_items; - - /* Items that have negative weights */ - GList *negative_items; - /* Hash table for fast access */ GHashTable *items_by_symbol; - rspamd_mempool_t *static_pool; - guint cur_items; guint used_items; guint uses; - gpointer map; struct rspamd_config *cfg; }; -struct saved_cache_item { - gchar symbol[MAX_SYMBOL]; - double weight; - guint32 frequency; - double avg_time; -}; - -struct dynamic_map_item { - struct in_addr addr; - guint32 mask; - gboolean negative; -}; - struct counter_data { gdouble value; gint number; }; struct cache_item { - /* Static item's data */ - struct saved_cache_item *s; - struct counter_data *cd; + /* This block is likely shared */ + gdouble avg_time; gdouble weight; guint32 frequency; - gdouble avg_time; - - rspamd_mempool_mutex_t *mtx; - - /* For dynamic rules */ - struct dynamic_map_item *networks; - guint32 networks_number; - gboolean is_dynamic; - gboolean is_skipped; + /* Static item's data */ + struct counter_data *cd; + enum rspamd_symbol_type type; /* Callback data */ symbol_func_t func; gpointer user_data; - /* Flags of virtual symbols */ - gboolean is_virtual; - gboolean is_callback; - gboolean is_ghost; - + /* Parent symbol id for virtual symbols */ + gint parent; /* Priority */ gint priority; + gint id; gdouble metric_weight; + + rspamd_mempool_mutex_t *mtx; }; gint diff --git a/src/libserver/symbols_cache.h b/src/libserver/symbols_cache.h index 2a7bc8624..41237df83 100644 --- a/src/libserver/symbols_cache.h +++ b/src/libserver/symbols_cache.h @@ -38,7 +38,8 @@ typedef void (*symbol_func_t)(struct rspamd_task *task, gpointer user_data); enum rspamd_symbol_type { SYMBOL_TYPE_NORMAL, SYMBOL_TYPE_VIRTUAL, - SYMBOL_TYPE_CALLBACK + SYMBOL_TYPE_CALLBACK, + SYMBOL_TYPE_GHOST }; /** -- 2.39.5