5 #ifndef CVMFS_QUOTA_POSIX_H_
6 #define CVMFS_QUOTA_POSIX_H_
10 #include <sys/types.h>
19 #include "gtest/gtest_prod.h"
44 const uint64_t limit,
const uint64_t cleanup_threshold,
45 const bool rebuild_database);
47 const std::string &exe_path,
48 const std::string &cache_workspace,
50 const uint64_t cleanup_threshold,
58 const std::string &description);
60 const std::string &description);
62 const std::string &description,
const bool is_catalog);
66 virtual bool Cleanup(
const uint64_t leave_size);
69 const std::string &channel_id);
71 const std::string &channel_id);
73 virtual std::vector<std::string>
List();
150 mask = ~(mask << (64-3));
156 mask = ~(mask << (64-3));
163 uint64_t algo_flags = hash.
algorithm - 1;
164 algo_flags = algo_flags << (64-3);
169 uint64_t algo_flags =
size >> (64-3);
170 shash::Any result(static_cast<shash::Algorithms>(algo_flags+1));
171 memcpy(result.digest,
digest, result.GetDigestSize());
209 bool Contains(
const std::string &hash_str);
210 bool DoCleanup(
const uint64_t leave_size);
223 const char *descriptions);
227 const std::string &description,
const CommandType command_type);
230 void GetLimits(uint64_t *limit, uint64_t *cleanup_threshold);
233 std::string *cache_dir,
234 std::string *workspace_dir);
236 const std::string &cache_workspace);
340 #endif // CVMFS_QUOTA_POSIX_H_
virtual uint32_t GetProtocolRevision()
sqlite3_stmt * stmt_block_
sqlite3_stmt * stmt_list_pinned_
virtual void UnregisterBackChannel(int back_channel[2], const std::string &channel_id)
std::vector< std::string > DoList(const CommandType list_command)
virtual uint64_t GetCleanupRate(uint64_t period_s)
static const unsigned kCommandBufferSize
sqlite3_stmt * stmt_list_
void GetLimits(uint64_t *limit, uint64_t *cleanup_threshold)
virtual uint64_t GetSize()
virtual bool Cleanup(const uint64_t leave_size)
static const unsigned kSqliteMemPerThread
virtual uint64_t GetMaxFileSize()
uint64_t cleanup_threshold_
bool DoCleanup(const uint64_t leave_size)
static void * MainCommandServer(void *data)
virtual void Insert(const shash::Any &hash, const uint64_t size, const std::string &description)
bool InitDatabase(const bool rebuild_database)
int BindReturnPipe(int pipe_wronly)
bool Contains(const std::string &hash_str)
perf::MultiRecorder cleanup_recorder_
unsigned char digest[digest_size_]
virtual std::vector< std::string > ListCatalogs()
void CheckHighPinWatermark()
void GetSharedStatus(uint64_t *gauge, uint64_t *pinned)
unsigned GetDigestSize() const
std::string workspace_dir_
void MakeReturnPipe(int pipe[2])
virtual std::vector< std::string > ListPinned()
virtual uint64_t GetSizePinned()
virtual bool HasCapability(Capabilities capability)
virtual bool Pin(const shash::Any &hash, const uint64_t size, const std::string &description, const bool is_catalog)
virtual std::vector< std::string > ListVolatile()
virtual uint64_t GetCapacity()
FRIEND_TEST(T_QuotaManager, BindReturnPipe)
void SetSize(const uint64_t new_size)
shash::Any RetrieveHash() const
static const unsigned kHighPinWatermark
virtual void RegisterBackChannel(int back_channel[2], const std::string &channel_id)
void UnlinkReturnPipe(int pipe_wronly)
virtual void Remove(const shash::Any &file)
static PosixQuotaManager * Create(const std::string &cache_workspace, const uint64_t limit, const uint64_t cleanup_threshold, const bool rebuild_database)
sqlite3_stmt * stmt_touch_
void DoInsert(const shash::Any &hash, const uint64_t size, const std::string &description, const CommandType command_type)
sqlite3_stmt * stmt_list_volatile_
void ProcessCommandBunch(const unsigned num, const LruCommand *commands, const char *descriptions)
sqlite3_stmt * stmt_unblock_
virtual void Unpin(const shash::Any &hash)
PosixQuotaManager(const uint64_t limit, const uint64_t cleanup_threshold, const std::string &cache_workspace)
virtual std::vector< std::string > List()
static int MainCacheManager(int argc, char **argv)
static const unsigned kMaxDescription
virtual void InsertVolatile(const shash::Any &hash, const uint64_t size, const std::string &description)
unsigned char digest[shash::kMaxDigestSize]
sqlite3_stmt * stmt_list_catalogs_
static PosixQuotaManager * CreateShared(const std::string &exe_path, const std::string &cache_workspace, const uint64_t limit, const uint64_t cleanup_threshold, bool foreground)
const unsigned kMaxDigestSize
virtual ~PosixQuotaManager()
static void ParseDirectories(const std::string cache_workspace, std::string *cache_dir, std::string *workspace_dir)
std::map< shash::Any, uint64_t > pinned_chunks_
sqlite3_stmt * stmt_unpin_
void CloseReturnPipe(int pipe[2])
void UnbindReturnPipe(int pipe_wronly)
virtual void Touch(const shash::Any &hash)
void StoreHash(const shash::Any &hash)
static const uint64_t kVolatileFlag
sqlite3_stmt * stmt_size_