#ifndef DCACHE_H #define DCACHE_H struct AliasMap { char *alias; char *path; struct AliasMap *next; }; struct CacheFileInformation { unsigned long lFilesize; char *pszPath; HTFormat atomMIMEType; /* TODO Later on, we're going to need to store the encoding and charset here too. */ time_t tLastModified; time_t tExpires; time_t tLastUsed; BOOL bDynamic; unsigned long lFlags; unsigned long nHits; BOOL bVerifiedThisSession; }; struct CacheRuleList { char *pszOriginal; char *pszReplacement; struct CacheRuleList *next; }; struct Data_LoadFile { HTRequest * request; int * pStatus; /* Where to store the status return */ FILE * fp; HTStream * stream; int iTotalBytes; }; #define DCACHE_MEMORY_ERROR -1 /* Allocation failed */ #define DCACHE_INVALID_INDEX_FILE -2 /* Invalid index file specified */ #define DCACHE_MAXIMUM_LINE_LENGTH 4096 /* Maximum line length allowed */ #ifdef WIN32 static int ReadCacheIndexFiles(void); static int BuildAliasList(void); #endif int HTLoadDCache_Async_SetFileInfo (struct Mwin* tw, struct Data_LoadFile* pData, char* pszURL, char** pszLocalname); BOOL InitializeDiskCache(void); void TerminateDiskCache(void); void FreeAliasMap(struct AliasMap *pList); char *GetResolvedURL(char *pszURL, HTFormat *pMime, long *pFileLength, char **ppPath); int ProcessIndexFile(char *pFilename, BOOL bDynamic); BOOL AddHomeDirToCacheList(char *rootDir); BOOL AddToLocalCacheList(char *alias, char *value); GLOBALREF HTProtocol HTDCache; struct CacheFileInformation *DCACHE_BeginNewCacheEntry(char *url, HTFormat atomMIMEType, unsigned long expected_length); HTStream *HTCacheWriter_create(HTStream * sink, struct CacheFileInformation *cfi, char *url); struct CacheFileInformation *DCACHE_CheckForCachedURL(char *pszURL, HTFormat *pMime, long *pFileLength, char **ppPath); char *DCACHE_CheckForRuleMatch(char *pszURL, HTFormat *pMime, long *pFileLength, char **ppPath); BOOL DCACHE_DeleteCachedURL(char *); void DCACHE_RegisterCacheHit(struct CacheFileInformation *pFileInfo); unsigned long DCACHE_GetCurrentSize(void); void DCACHE_ClearMainCache(void); void DCACHE_FlushMainCache(void); #ifdef MAC BOOL DCACHE_LooksLikeCacheFileName(char *szFileName); #endif #endif /* DCACHE_H */