summaryrefslogtreecommitdiffabout
path: root/cache.h
Side-by-side diff
Diffstat (limited to 'cache.h') (more/less context) (ignore whitespace changes)
-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
@@ -1,23 +1,35 @@
/*
* Since git has it's own cache.h which we include,
* lets test on CGIT_CACHE_H to avoid confusion
*/
#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 */