Browse Source

Rework structure.

tags/1.0.0
Vsevolod Stakhov 9 years ago
parent
commit
84dca69335
2 changed files with 12 additions and 40 deletions
  1. 10
    39
      src/libserver/symbols_cache.c
  2. 2
    1
      src/libserver/symbols_cache.h

+ 10
- 39
src/libserver/symbols_cache.c View File

@@ -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

+ 2
- 1
src/libserver/symbols_cache.h View File

@@ -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
};

/**

Loading…
Cancel
Save