author | Lars Hjemli <hjemli@gmail.com> | 2008-05-03 08:10:07 (UTC) |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2008-05-03 08:10:07 (UTC) |
commit | e19683bedebc74593cb4c4518e47a334a5478e1e (patch) (unidiff) | |
tree | 8b4f231327d27b9451a6d9ab4b2af47558c61352 /cache.h | |
parent | 112b2080626c62fff27cf8aaa9ac2fb07eb50b74 (diff) | |
parent | 9000bbf865cb3578ba5ed3810dc44253cb46ec7f (diff) | |
download | cgit-e19683bedebc74593cb4c4518e47a334a5478e1e.zip cgit-e19683bedebc74593cb4c4518e47a334a5478e1e.tar.gz cgit-e19683bedebc74593cb4c4518e47a334a5478e1e.tar.bz2 |
Merge branch 'lh/cache'
* lh/cache:
Add page 'ls_cache'
Redesign the caching layer
-rw-r--r-- | cache.h | 38 |
1 files changed, 25 insertions, 13 deletions
@@ -1,23 +1,35 @@ | |||
1 | /* | 1 | /* |
2 | * Since git has it's own cache.h which we include, | 2 | * Since git has it's own cache.h which we include, |
3 | * lets test on CGIT_CACHE_H to avoid confusion | 3 | * lets test on CGIT_CACHE_H to avoid confusion |
4 | */ | 4 | */ |
5 | 5 | ||
6 | #ifndef CGIT_CACHE_H | 6 | #ifndef CGIT_CACHE_H |
7 | #define CGIT_CACHE_H | 7 | #define CGIT_CACHE_H |
8 | 8 | ||
9 | struct cacheitem { | 9 | typedef void (*cache_fill_fn)(void *cbdata); |
10 | char *name; | 10 | |
11 | struct stat st; | 11 | |
12 | int ttl; | 12 | /* Print cached content to stdout, generate the content if necessary. |
13 | int fd; | 13 | * |
14 | }; | 14 | * Parameters |
15 | 15 | * size max number of cache files | |
16 | extern char *cache_safe_filename(const char *unsafe); | 16 | * path directory used to store cache files |
17 | extern int cache_lock(struct cacheitem *item); | 17 | * key the key used to lookup cache files |
18 | extern int cache_unlock(struct cacheitem *item); | 18 | * ttl max cache time in seconds for this key |
19 | extern int cache_cancel_lock(struct cacheitem *item); | 19 | * fn content generator function for this key |
20 | extern int cache_exist(struct cacheitem *item); | 20 | * cbdata user-supplied data to the content generator function |
21 | extern int cache_expired(struct cacheitem *item); | 21 | * |
22 | * Return value | ||
23 | * 0 indicates success, everyting else is an error | ||
24 | */ | ||
25 | extern int cache_process(int size, const char *path, const char *key, int ttl, | ||
26 | cache_fill_fn fn, void *cbdata); | ||
27 | |||
28 | |||
29 | /* List info about all cache entries on stdout */ | ||
30 | extern int cache_ls(const char *path); | ||
31 | |||
32 | /* Print a message to stdout */ | ||
33 | extern void cache_log(const char *format, ...); | ||
22 | 34 | ||
23 | #endif /* CGIT_CACHE_H */ | 35 | #endif /* CGIT_CACHE_H */ |