X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fqache.h;h=5c242a45b460d7d8bab30c3c3f916203990c6c49;hb=1f71ba3ef3df61706d7aee1ffa981cf6fdee7c4e;hp=317a11c1cf450fffc018943d4fedf108621c77c0;hpb=14551d39386ee81bfd1422be4bb18e41d2e4ef95;p=libucw.git diff --git a/lib/qache.h b/lib/qache.h index 317a11c1..5c242a45 100644 --- a/lib/qache.h +++ b/lib/qache.h @@ -8,9 +8,10 @@ #define _UCW_QACHE_H struct qache_params { - byte *file_name; + char *file_name; uns block_size; /* Cache block size (a power of two) */ uns cache_size; /* Size of the whole cache */ + uns max_entries; /* Maximum number of cached entries */ int force_reset; /* Force creation of a new cache even if the old one seems usable, -1 if reset should never be done */ uns format_id; /* Data format ID (old cache not used if formats differ) */ }; @@ -25,7 +26,7 @@ void qache_close(struct qache *q, uns retain_data); /* Insert new item to the cache with a given key and data. If pos_hint is non-zero, it serves * as a hint about the position of the entry (if it's known that an entry with the particular key - * was located there a moment ago. Returns position of the new entry. + * was located there a moment ago). Returns position of the new entry. */ uns qache_insert(struct qache *q, qache_key_t *key, uns pos_hint, void *data, uns size); @@ -36,7 +37,13 @@ uns qache_insert(struct qache *q, qache_key_t *key, uns pos_hint, void *data, un * can be greater than the original value requested). The start indicates starting offset inside the * entry's data. */ -uns qache_lookup(struct qache *q, qache_key_t *key, uns pos_hint, void **datap, uns *sizep, uns start); +uns qache_lookup(struct qache *q, qache_key_t *key, uns pos_hint, byte **datap, uns *sizep, uns start); + +/* Inspect data in the cache (but don't modify LRU nor anything else), given a position. + * If key is non-NULL, it's filled with the cache key. The rest works as in qache_lookup. + * Returns 0 if the entry is empty, ~0 for position out of range, entry number otherwise. + */ +uns qache_probe(struct qache *q, qache_key_t *key, uns pos, byte **datap, uns *sizep, uns start); /* Delete data from the cache, given a key and a position hint. */ uns qache_delete(struct qache *q, qache_key_t *key, uns pos_hint); @@ -44,4 +51,7 @@ uns qache_delete(struct qache *q, qache_key_t *key, uns pos_hint); /* Debugging dump (beware, doesn't lock the cache!) */ void qache_debug(struct qache *q); +/* Check consistency of the cache structure */ +void qache_audit(struct qache *q); + #endif