mirror of
https://github.com/shadowsocks/shadowsocks-libev.git
synced 2026-11-03 08:23:47 +00:00
Refine LRU cache by clearing old objects
This commit is contained in:
+9
-6
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user