diff options
author | James Bursa <james@netsurf-browser.org> | 2003-02-09 12:58:15 +0000 |
---|---|---|
committer | James Bursa <james@netsurf-browser.org> | 2003-02-09 12:58:15 +0000 |
commit | a4c5929a2fac1cb0c039b2d009d8093ac81a90d7 (patch) | |
tree | 710bf4247d92ec63df7c92815c5360ec907a4b66 /desktop/cache.c | |
parent | 948dfeb1c2404e6bdad8c20c83a26f3eecb3764a (diff) | |
download | netsurf-a4c5929a2fac1cb0c039b2d009d8093ac81a90d7.tar.gz netsurf-a4c5929a2fac1cb0c039b2d009d8093ac81a90d7.tar.bz2 |
[project @ 2003-02-09 12:58:14 by bursa]
Reorganization and rewrite of fetch, cache, and content handling.
svn path=/import/netsurf/; revision=96
Diffstat (limited to 'desktop/cache.c')
-rw-r--r-- | desktop/cache.c | 128 |
1 files changed, 0 insertions, 128 deletions
diff --git a/desktop/cache.c b/desktop/cache.c deleted file mode 100644 index 012683ebe..000000000 --- a/desktop/cache.c +++ /dev/null @@ -1,128 +0,0 @@ -/** - * $Id: cache.c,v 1.1 2002/11/02 22:28:05 bursa Exp $ - */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include "netsurf/desktop/cache.h" -#include "netsurf/render/utils.h" -#include "netsurf/utils/log.h" -#include "curl/curl.h" -#include "ubiqx/ubi_Cache.h" - -/** - * internal structures and declarations - */ - -ubi_cacheRoot memcache; - -struct memcache_entry { - ubi_cacheEntry Node; - char * url; - struct content * content; -}; - -static int memcache_compare(ubi_trItemPtr item, ubi_trNode * node); -void memcache_free(ubi_trNode * node); - - -/** - * cache_init -- initialise the cache manager - */ - -void cache_init(void) -{ - /* memory cache */ - ubi_cacheInit(&memcache, memcache_compare, memcache_free, 40, 100*1024); -} - - -/** - * cache_quit -- terminate the cache manager - */ - -void cache_quit(void) -{ - ubi_cacheClear(&memcache); -} - - -/** - * cache_get -- retrieve url from memory cache or disc cache - */ - -struct content * cache_get(char * const url) -{ - struct memcache_entry * entry; - - entry = (struct memcache_entry *) ubi_cacheGet(&memcache, url); - if (entry != 0) { - LOG(("url %s in cache, node %p", url, entry)); - entry->content->ref_count++; - return entry->content; - } - - LOG(("url %s not cached", url)); - - /* TODO: check disc cache */ - - return 0; -} - - -/** - * cache_put -- place content in the memory cache - */ - -void cache_put(char * const url, struct content * content, unsigned long size) -{ - struct memcache_entry * entry; - - entry = xcalloc(1, sizeof(struct memcache_entry)); - entry->url = xstrdup(url); - entry->content = content; - content->ref_count = 2; /* cache, caller */ - ubi_cachePut(&memcache, size, - (ubi_cacheEntry *) entry, entry->url); -} - - -/** - * cache_free -- free a cache object if it is no longer used - */ - -void cache_free(struct content * content) -{ - LOG(("content %p, ref_count %u", content, content->ref_count)); - if (--content->ref_count == 0) { - LOG(("ref count 0, freeing")); - content_destroy(content); - } -} - - -/** - * memory cache - */ - -static int memcache_compare(ubi_trItemPtr item, ubi_trNode * node) -{ - return strcmp((char *) item, ((struct memcache_entry *) node)->url); -} - - -void memcache_free(ubi_trNode * node) -{ - struct memcache_entry * entry = (struct memcache_entry *) node; - - LOG(("node %p, node->url %s", node, entry->url)); - - cache_free(entry->content); - free(entry->url); - free(entry); - - /* TODO: place the object in a disc cache */ -} - - |