aboutsummaryrefslogtreecommitdiff
path: root/src/cache.h
diff options
context:
space:
mode:
authorjcid <devnull@localhost>2007-10-07 00:36:34 +0200
committerjcid <devnull@localhost>2007-10-07 00:36:34 +0200
commit93715c46a99c96d6c866968312691ec9ab0f6a03 (patch)
tree573f19ec6aa740844f53a7c0eb7114f04096bf64 /src/cache.h
Initial revision
Diffstat (limited to 'src/cache.h')
-rw-r--r--src/cache.h75
1 files changed, 75 insertions, 0 deletions
diff --git a/src/cache.h b/src/cache.h
new file mode 100644
index 00000000..e3891740
--- /dev/null
+++ b/src/cache.h
@@ -0,0 +1,75 @@
+#ifndef __CACHE_H__
+#define __CACHE_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+#include "chain.h"
+#include "url.h"
+
+/*
+ * Cache Op codes
+ */
+#define CA_Send (0) /* Normal update */
+#define CA_Close (1) /* Successful operation close */
+#define CA_Abort (2) /* Operation abort */
+
+/*
+ * Flag Defines
+ */
+#define CA_GotHeader (1) /* True after header is completely got */
+#define CA_GotContentType (2) /* True after Content-Type is known */
+#define CA_GotLength (4) /* True if Content-Length is known */
+#define CA_GotData (8) /* True if we have all Data in cache */
+#define CA_FreeData (16) /* Free the cache Data on close */
+#define CA_Redirect (32) /* Data actually points to a redirect */
+#define CA_ForceRedirect (64) /* Unconditional redirect */
+#define CA_TempRedirect (128) /* Temporal redirect */
+#define CA_NotFound (256) /* True if remote server didn't find the URL */
+#define CA_Stopped (512) /* True if the entry has been stopped */
+#define CA_MsgErased (1024) /* Used to erase the bw's status bar */
+#define CA_RedirectLoop (2048) /* Redirect loop */
+#define CA_InternalUrl (4096) /* URL content is generated by dillo */
+#define CA_HugeFile (8192) /* URL content is too big */
+
+/*
+ * Callback type for cache clients
+ */
+typedef struct _CacheClient CacheClient_t;
+typedef void (*CA_Callback_t)(int Op, CacheClient_t *Client);
+
+/*
+ * Data structure for cache clients.
+ */
+struct _CacheClient {
+ int Key; /* Primary Key for this client */
+ const DilloUrl *Url; /* Pointer to a cache entry Url */
+ void *Buf; /* Pointer to cache-data */
+ uint_t BufSize; /* Valid size of cache-data */
+ CA_Callback_t Callback; /* Client function */
+ void *CbData; /* Client function data */
+ void *Web; /* Pointer to the Web structure of our client */
+};
+
+/*
+ * Function prototypes
+ */
+void a_Cache_init(void);
+int a_Cache_open_url(void *Web, CA_Callback_t Call, void *CbData);
+int a_Cache_get_buf(const DilloUrl *Url, char **PBuf, int *BufSize);
+void a_Cache_process_dbuf(int Op, const char *buf, size_t buf_size,
+ const DilloUrl *Url);
+void a_Cache_entry_inject(const DilloUrl *Url, Dstr *data_ds);
+void a_Cache_entry_remove_by_url(DilloUrl *url);
+void a_Cache_freeall(void);
+CacheClient_t *a_Cache_client_get_if_unique(int Key);
+void a_Cache_stop_client(int Key);
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+#endif /* __CACHE_H__ */
+