39#include "HTTPCacheTable.h"
41#include "HTTPCacheDisconnectedMode.h"
107 FILE *d_locked_open_file;
109 bool d_cache_enabled;
110 bool d_cache_protected;
112 bool d_expire_ignored;
113 bool d_always_validate;
115 unsigned long d_total_size;
116 unsigned long d_folder_size;
117 unsigned long d_gc_buffer;
118 unsigned long d_max_entry_size;
119 int d_default_expiration;
121 vector<string> d_cache_control;
131 pthread_mutex_t d_cache_mutex;
136 vector<string> d_open_files;
140 friend class HTTPCacheTest;
141 friend class HTTPConnectTest;
150 HTTPCache(
string cache_root,
bool force);
152 static void delete_instance();
154 void set_cache_root(
const string &root =
"");
155 void create_cache_root(
const string &cache_root);
158 bool get_single_user_lock(
bool force =
false);
159 void release_single_user_lock();
161 bool is_url_in_cache(
const string &url);
165 void write_metadata(
const string &cachename,
const vector<string> &headers);
166 void read_metadata(
const string &cachename, vector<string> &headers);
167 int write_body(
const string &cachename,
const FILE *src);
168 FILE *open_body(
const string &cachename);
171 bool startGC()
const;
173 void perform_garbage_collection();
191 bool is_expire_ignored()
const;
208 void lock_cache_interface() {
209 DBG(cerr <<
"Locking interface... ");
210 LOCK(&d_cache_mutex);
211 DBGN(cerr <<
"Done" << endl);
213 void unlock_cache_interface() {
214 DBG(cerr <<
"Unlocking interface... " );
215 UNLOCK(&d_cache_mutex);
216 DBGN(cerr <<
"Done" << endl);
221 const vector<string> &headers,
const FILE *body);
223 const vector<string> &headers);
CacheDisconnectedMode get_cache_disconnected() const
bool cache_response(const string &url, time_t request_time, const vector< string > &headers, const FILE *body)
static HTTPCache * instance(const string &cache_root, bool force=false)
vector< string > get_cache_control()
void set_expire_ignored(bool mode)
void set_default_expiration(int exp_time)
string get_cache_root() const
void set_cache_disconnected(CacheDisconnectedMode mode)
void release_cached_response(FILE *response)
vector< string > get_conditional_request_headers(const string &url)
unsigned long get_max_entry_size() const
void set_cache_enabled(bool mode)
unsigned long get_max_size() const
void set_max_entry_size(unsigned long size)
bool get_always_validate() const
int get_default_expiration() const
bool is_url_valid(const string &url)
void set_always_validate(bool validate)
void update_response(const string &url, time_t request_time, const vector< string > &headers)
void set_max_size(unsigned long size)
void set_cache_control(const vector< string > &cc)
FILE * get_cached_response(const string &url, vector< string > &headers, string &cacheName)
bool is_cache_enabled() const
top level DAP object to house generic methods
bool is_hop_by_hop_header(const string &header)