From 0781d5363fb6fd723a2316fc7558aef6439b2f71 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 21 Jan 2005 00:16:08 +0000 Subject: massive work git-svn-id: file:///home/lennart/svn/public/avahi/trunk@8 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe --- cache.h | 44 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 39 insertions(+), 5 deletions(-) (limited to 'cache.h') diff --git a/cache.h b/cache.h index f2014df..ec0e974 100644 --- a/cache.h +++ b/cache.h @@ -1,22 +1,56 @@ #ifndef foocachehfoo #define foocachehfoo +#include + +struct _flxCache; +typedef struct _flxCache flxCache; + +#include "prioq.h" +#include "server.h" +#include "llist.h" + typedef enum { FLX_CACHE_VALID, FLX_CACHE_EXPIRY1, FLX_CACHE_EXPIRY2, FLX_CACHE_EXPIRY3 -} flxCacheEntry; +} flxCacheEntryState; + +typedef struct flxCacheEntry flxCacheEntry; -typedef struct flxCacheEntry { +struct flxCacheEntry { + flxRecord *record; GTimeVal timestamp; - flxRecord rr; - gint interface; + GTimeVal expiry; + flxAddress origin; flxCacheEntryState state; + + FLX_LLIST_FIELDS(flxCacheEntry, by_name); + + flxPrioQueueNode *node; -} flxCacheEntry; +}; + +struct _flxCache { + flxServer *server; + flxInterface *interface; + + GHashTable *hash_table; +}; + +flxCache *flx_cache_new(flxServer *server, flxInterface *interface); +void flx_cache_free(flxCache *c); + +flxCacheEntry *flx_cache_lookup_key(flxCache *c, flxKey *k); +flxCacheEntry *flx_cache_lookup_record(flxCache *c, flxRecord *r); + +flxCacheEntry *flx_cache_update(flxCache *c, flxRecord *r, gboolean unique, const flxAddress *a); + +void flx_cache_drop_key(flxCache *c, flxKey *k); +void flx_cache_drop_record(flxCache *c, flxRecord *r); #endif -- cgit