Refine cache replacing

This commit is contained in:
Max Lv
2016-11-15 13:44:47 +08:00
parent 62aec1e280
commit c6876b0707
4 changed files with 22 additions and 16 deletions
+5 -5
View File
@@ -47,7 +47,7 @@
*/
int
cache_create(struct cache **dst, const size_t capacity,
void (*free_cb)(void *element))
void (*free_cb)(void *key, void *element))
{
struct cache *new = NULL;
@@ -92,7 +92,7 @@ cache_delete(struct cache *cache, int keep_data)
HASH_DEL(cache->entries, entry);
if (entry->data != NULL) {
if (cache->free_cb) {
cache->free_cb(entry->data);
cache->free_cb(entry->key, entry->data);
} else {
ss_free(entry->data);
}
@@ -132,7 +132,7 @@ cache_clear(struct cache *cache, ev_tstamp age)
HASH_DEL(cache->entries, entry);
if (entry->data != NULL) {
if (cache->free_cb) {
cache->free_cb(entry->data);
cache->free_cb(entry->key, entry->data);
} else {
ss_free(entry->data);
}
@@ -173,7 +173,7 @@ cache_remove(struct cache *cache, char *key, size_t key_len)
HASH_DEL(cache->entries, tmp);
if (tmp->data != NULL) {
if (cache->free_cb) {
cache->free_cb(tmp->data);
cache->free_cb(tmp->key, tmp->data);
} else {
ss_free(tmp->data);
}
@@ -291,7 +291,7 @@ cache_insert(struct cache *cache, char *key, size_t key_len, void *data)
HASH_DELETE(hh, cache->entries, entry);
if (entry->data != NULL) {
if (cache->free_cb) {
cache->free_cb(entry->data);
cache->free_cb(entry->key, entry->data);
} else {
ss_free(entry->data);
}