From 188b15d9cb859b78d8b3616c6e1fcb3d3d8879c6 Mon Sep 17 00:00:00 2001 From: hsn <> Date: Mon, 22 Sep 2003 14:51:53 +0000 Subject: [PATCH] Initial revision --- server/fifocache.h | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 server/fifocache.h diff --git a/server/fifocache.h b/server/fifocache.h new file mode 100644 index 0000000..4cc5592 --- /dev/null +++ b/server/fifocache.h @@ -0,0 +1,41 @@ +/* + * Simple FIFO generic cache. (c) Radim Kolar 2003. + * This file is copyrighted as LGPL. + * + * When this file is used as part of FSP, it uses 2-term BSD license + * (aka MIT/X11 License). + */ + +struct FifoCache +{ + unsigned int cachesize; /* max. number of entries */ + BYTE *e_head; /* block of cache entries, every entry has entrysize bytes */ + BYTE *e_next; /* new intem will be placed there */ + const BYTE *e_stop; /* stop mark for entries, never write here! */ + unsigned int entrysize; /* size of 1 entry in bytes */ + BYTE *k_head; /* block of keys starts there */ + BYTE *k_next; /* new item */ + const BYTE *k_stop; /* stop mark for key entries */ + unsigned int keysize; /* size of 1 key in bytes */ + void (*k_destroy_func) (void *key); /* key destoy function */ + void (*e_destroy_func) (void *key); /* element destoy function */ + int (*k_compare_func) (const void *key1,const void *key2); /* element destoy function */ + unsigned int hit; /* cache search hits */ + unsigned int miss; /* cache search misses */ + unsigned int (*get_keysize) (void *key); /* return dynamic memory used by key */ + unsigned int (*get_entrysize) (void *entry); /* return dynamic memory used by entry */ +}; + +/* prototypes */ +struct FifoCache * f_cache_new(unsigned int cachesize,unsigned int entrysize,void (*edf) (void *key),unsigned int keysize, void (*kdf) (void *key), int (*kcf)(const void *,const void *)); +void f_cache_set_memory_profilers(struct FifoCache *cache,unsigned int (*keysize) (void *key),unsigned int (*entrysize) (void *entry)); +void f_cache_destroy(struct FifoCache *cache); +void * f_cache_put(struct FifoCache *cache,const void *key,const void *data); +void f_cache_clear(struct FifoCache *cache); +void *f_cache_find(struct FifoCache *cache,const void *key); +int f_cache_delete_entry(struct FifoCache *cache, void *entry); +void * f_cache_get_key(struct FifoCache *cache,const void *entry); +int f_cache_delete_by_key(struct FifoCache *cache, void *key); +/* utility functions */ +unsigned int f_cache_void_profiler(void *anything); +void f_cache_stats(struct FifoCache *cache,FILE *f);