29 #ifndef BESFileLockingCache_h_ 30 #define BESFileLockingCache_h_ 1 44 unsigned long long size;
48 typedef std::list<cache_entry> CacheFiles;
75 static const char DAP_CACHE_CHAR =
'#';
89 unsigned long long d_target_size;
97 void m_check_ctor_params();
98 void m_initialize_cache_info();
100 unsigned long long m_collect_cache_dir_info(CacheFiles &contents);
106 void m_record_descriptor(
const string &file,
int fd);
107 int m_get_descriptor(
const string &file);
110 typedef std::multimap<string, int> FilesAndLockDescriptors;
111 FilesAndLockDescriptors d_locks;
117 BESFileLockingCache(): d_cache_dir(
""), d_prefix(
""), d_max_cache_size_in_bytes(0), d_target_size(0), d_cache_info(
""), d_cache_info_fd(-1){};
118 void initialize(
const string &cache_dir,
const string &prefix,
unsigned long long size);
119 BESFileLockingCache(
const string &cache_dir,
const string &prefix,
unsigned long long size);
120 virtual ~
BESFileLockingCache() {
if (d_cache_info_fd != -1){ close(d_cache_info_fd); d_cache_info_fd=-1;} }
124 virtual string get_cache_file_name(
const string &src,
bool mangle =
true);
126 virtual bool create_and_lock(
const string &target,
int &fd);
127 virtual bool get_read_lock(
const string &target,
int &fd);
128 virtual void exclusive_to_shared_lock(
int fd);
129 virtual void unlock_and_close(
const string &target);
132 virtual bool getExclusiveLock(
string file_name,
int &ref_fd);
134 virtual void lock_cache_write();
135 virtual void lock_cache_read();
136 virtual void unlock_cache();
138 virtual unsigned long long update_cache_info(
const string &target);
139 virtual bool cache_too_big(
unsigned long long current_size)
const;
140 virtual unsigned long long get_cache_size();
141 virtual void update_and_purge(
const string &new_file);
142 virtual void purge_file(
const string &file);
144 const string getCacheFilePrefix();
145 const string getCacheDirectory();
147 static bool dir_exists(
const string &dir);
151 virtual void dump(ostream &strm)
const ;
154 #endif // BESFileLockingCache_h_
Implementation of a caching mechanism for compressed data. This cache uses simple advisory locking fo...
Base object for bes objects.
unsigned long long d_max_cache_size_in_bytes
How many bytes can the cache hold before we have to purge.