diff options
Diffstat (limited to 'src/libutil/hash.h')
-rw-r--r-- | src/libutil/hash.h | 128 |
1 files changed, 4 insertions, 124 deletions
diff --git a/src/libutil/hash.h b/src/libutil/hash.h index 7f4f82b43..b7bf9ff18 100644 --- a/src/libutil/hash.h +++ b/src/libutil/hash.h @@ -7,111 +7,10 @@ #ifndef RSPAMD_HASH_H #define RSPAMD_HASH_H -#include "mem_pool.h" +#include "config.h" -struct rspamd_hash_node { - gpointer key; - gpointer value; - guint key_hash; - struct rspamd_hash_node *next; -}; - -typedef struct rspamd_hash_s { - gint size; - gint nnodes; - struct rspamd_hash_node **nodes; - - GHashFunc hash_func; - GEqualFunc key_equal_func; - gint shared; - rspamd_mempool_rwlock_t *lock; - rspamd_mempool_t *pool; -} rspamd_hash_t; - -typedef void (*lru_cache_insert_func)(gpointer storage, gpointer key, - gpointer value); -typedef gpointer (*lru_cache_lookup_func)(gpointer storage, gpointer key); -typedef gboolean (*lru_cache_delete_func)(gpointer storage, gpointer key); -typedef void (*lru_cache_destroy_func)(gpointer storage); - -typedef struct rspamd_lru_hash_s { - gint maxsize; - gint maxage; - GDestroyNotify value_destroy; - GDestroyNotify key_destroy; - GQueue *q; - gpointer storage; - lru_cache_insert_func insert_func; - lru_cache_lookup_func lookup_func; - lru_cache_delete_func delete_func; - lru_cache_destroy_func destroy_func; -} rspamd_lru_hash_t; - -typedef struct rspamd_lru_element_s { - gpointer data; - gpointer key; - time_t store_time; - guint ttl; - rspamd_lru_hash_t *hash; - GList *link; -} rspamd_lru_element_t; - - -#define rspamd_hash_size(x) (x)->nnodes - -/** - * Create new hash in specified pool - * @param pool memory pool object - * @param hash_func pointer to hash function - * @param key_equal_func pointer to function for comparing keys - * @return new rspamd_hash object - */ -rspamd_hash_t * rspamd_hash_new (rspamd_mempool_t *pool, - GHashFunc hash_func, - GEqualFunc key_equal_func); - -/** - * Create new hash in specified pool using shared memory - * @param pool memory pool object - * @param hash_func pointer to hash function - * @param key_equal_func pointer to function for comparing keys - * @return new rspamd_hash object - */ -rspamd_hash_t * rspamd_hash_new_shared (rspamd_mempool_t *pool, - GHashFunc hash_func, - GEqualFunc key_equal_func, - gint size); - -/** - * Insert item in hash - * @param hash hash object - * @param key key to insert - * @param value value of key - */ -void rspamd_hash_insert (rspamd_hash_t *hash, gpointer key, gpointer value); - -/** - * Remove item from hash - * @param hash hash object - * @param key key to delete - */ -gboolean rspamd_hash_remove (rspamd_hash_t *hash, gpointer key); - -/** - * Lookup item from hash - * @param hash hash object - * @param key key to find - * @return value of key or NULL if key is not found - */ -gpointer rspamd_hash_lookup (rspamd_hash_t *hash, gpointer key); - -/** - * Iterate throught hash - * @param hash hash object - * @param func user's function that would be called for each key/value pair - * @param user_data pointer to user's data that would be passed to user's function - */ -void rspamd_hash_foreach (rspamd_hash_t *hash, GHFunc func, gpointer user_data); +struct rspamd_lru_hash_s; +typedef struct rspamd_lru_hash_s rspamd_lru_hash_t; /** * Create new lru hash @@ -121,32 +20,13 @@ void rspamd_hash_foreach (rspamd_hash_t *hash, GHFunc func, gpointer user_data); * @param key_equal_func pointer to function for comparing keys * @return new rspamd_hash object */ -rspamd_lru_hash_t * rspamd_lru_hash_new (GHashFunc hash_func, - GEqualFunc key_equal_func, +rspamd_lru_hash_t * rspamd_lru_hash_new ( gint maxsize, gint maxage, GDestroyNotify key_destroy, GDestroyNotify value_destroy); /** - * Create new lru hash with custom storage - * @param maxsize maximum elements in a hash - * @param maxage maximum age of elemnt - * @param hash_func pointer to hash function - * @param key_equal_func pointer to function for comparing keys - * @return new rspamd_hash object - */ -rspamd_lru_hash_t * rspamd_lru_hash_new_full (GHashFunc hash_func, - GEqualFunc key_equal_func, - gint maxsize, - gint maxage, - GDestroyNotify key_destroy, - GDestroyNotify value_destroy, - gpointer storage, - lru_cache_insert_func insert_func, - lru_cache_lookup_func lookup_func, - lru_cache_delete_func delete_func); -/** * Lookup item from hash * @param hash hash object * @param key key to find |