about summary refs log tree commit diff
path: root/cache.h
diff options
context:
space:
mode:
authorLars Hjemli <hjemli@gmail.com>2008-05-03 10:10:07 +0200
committerLars Hjemli <hjemli@gmail.com>2008-05-03 10:10:07 +0200
commite19683bedebc74593cb4c4518e47a334a5478e1e (patch)
tree8b4f231327d27b9451a6d9ab4b2af47558c61352 /cache.h
parentPrint an error if filename is not found in html_include. (diff)
parentAdd page 'ls_cache' (diff)
downloadcgit-pink-e19683bedebc74593cb4c4518e47a334a5478e1e.tar.gz
cgit-pink-e19683bedebc74593cb4c4518e47a334a5478e1e.zip
Merge branch 'lh/cache'
* lh/cache:
  Add page 'ls_cache'
  Redesign the caching layer
Diffstat (limited to 'cache.h')
-rw-r--r--cache.h38
1 files changed, 25 insertions, 13 deletions
diff --git a/cache.h b/cache.h
index 4dcbea3..66cc41f 100644
--- a/cache.h
+++ b/cache.h
@@ -6,18 +6,30 @@
 #ifndef CGIT_CACHE_H
 #define CGIT_CACHE_H
 
-struct cacheitem {
-	char *name;
-	struct stat st;
-	int ttl;
-	int fd;
-};
-
-extern char *cache_safe_filename(const char *unsafe);
-extern int cache_lock(struct cacheitem *item);
-extern int cache_unlock(struct cacheitem *item);
-extern int cache_cancel_lock(struct cacheitem *item);
-extern int cache_exist(struct cacheitem *item);
-extern int cache_expired(struct cacheitem *item);
+typedef void (*cache_fill_fn)(void *cbdata);
+
+
+/* Print cached content to stdout, generate the content if necessary.
+ *
+ * Parameters
+ *   size    max number of cache files
+ *   path    directory used to store cache files
+ *   key     the key used to lookup cache files
+ *   ttl     max cache time in seconds for this key
+ *   fn      content generator function for this key
+ *   cbdata  user-supplied data to the content generator function
+ *
+ * Return value
+ *   0 indicates success, everyting else is an error
+ */
+extern int cache_process(int size, const char *path, const char *key, int ttl,
+			 cache_fill_fn fn, void *cbdata);
+
+
+/* List info about all cache entries on stdout */
+extern int cache_ls(const char *path);
+
+/* Print a message to stdout */
+extern void cache_log(const char *format, ...);
 
 #endif /* CGIT_CACHE_H */