Refine LRU cache by clearing old objects

This commit is contained in:
Max Lv
2016-10-26 08:53:21 +08:00
parent e0cfa6945a
commit 85a5c86637
9 changed files with 84 additions and 12 deletions
+9 -6
View File
@@ -29,6 +29,7 @@
#define _CACHE_
#include "uthash.h"
#include "ev.h"
/**
* A cache entry
@@ -36,6 +37,7 @@
struct cache_entry {
char *key; /**<The key */
void *data; /**<Payload */
ev_tstamp ts; /**<Timestamp */
UT_hash_handle hh; /**<Hash Handle for uthash */
};
@@ -48,12 +50,13 @@ struct cache {
void (*free_cb) (void *element); /**<Callback function to free cache entries */
};
extern int cache_create(struct cache **dst, const size_t capacity,
int cache_create(struct cache **dst, const size_t capacity,
void (*free_cb)(void *element));
extern int cache_delete(struct cache *cache, int keep_data);
extern int cache_lookup(struct cache *cache, char *key, size_t key_len, void *result);
extern int cache_insert(struct cache *cache, char *key, size_t key_len, void *data);
extern int cache_remove(struct cache *cache, char *key, size_t key_len);
extern int cache_key_exist(struct cache *cache, char *key, size_t key_len);
int cache_delete(struct cache *cache, int keep_data);
int cache_clear(struct cache *cache, ev_tstamp age);
int cache_lookup(struct cache *cache, char *key, size_t key_len, void *result);
int cache_insert(struct cache *cache, char *key, size_t key_len, void *data);
int cache_remove(struct cache *cache, char *key, size_t key_len);
int cache_key_exist(struct cache *cache, char *key, size_t key_len);
#endif