29 #ifndef CVMFS_CATALOG_MGR_RW_H_
30 #define CVMFS_CATALOG_MGR_RW_H_
52 class DownloadManager;
64 template <
class CatalogMgrT>
65 class CatalogBalancer;
78 const std::string &stratum0,
83 const unsigned nested_kcatalog_limit,
84 const unsigned root_kcatalog_limit,
85 const unsigned file_mbyte_limit,
90 const std::string &dir_cache =
"");
93 const bool volatile_content,
94 const std::string &voms_authz,
100 const std::string &parent_directory)
106 const std::string &parent_directory,
108 void RemoveFile(
const std::string &file_path);
112 const std::string &parent_directory);
115 const std::string &directory_path);
118 void Clone(
const std::string from,
const std::string to);
119 void CloneTree(
const std::string &from_dir,
const std::string &to_dir);
124 const std::string &parent_directory,
131 const bool merge =
true);
133 const uint64_t new_size);
143 void SetTTL(
const uint64_t new_ttl);
145 bool Commit(
const bool stop_for_tweaks,
146 const uint64_t manual_revision,
154 "manager because it is not balanceable");
168 const std::string &parent_directory);
178 const std::string &dest_parent_dir,
195 const bool stop_for_tweaks);
207 const CatalogUploadContext clg_upload_context);
218 const unsigned int number_of_dirty_catalogs =
220 assert(number_of_dirty_catalogs <= result->
size());
226 const CatalogUploadContext unused);
283 #endif // CVMFS_CATALOG_MGR_RW_H_
void AddChunkedFile(const DirectoryEntryBase &entry, const XattrList &xattrs, const std::string &parent_directory, const FileChunkList &file_chunks)
const manifest::Manifest * manifest() const
void CloneTree(const std::string &from_dir, const std::string &to_dir)
void AddHardlinkGroup(const DirectoryEntryBaseList &entries, const XattrList &xattrs, const std::string &parent_directory, const FileChunkList &file_chunks)
void AddDirectory(const DirectoryEntryBase &entry, const XattrList &xattrs, const std::string &parent_directory)
unsigned nested_kcatalog_limit_
~WritableCatalogManager()
void RemoveDirectory(const std::string &directory_path)
WritableCatalog * GetHostingCatalog(const std::string &path)
void FixWeight(WritableCatalog *catalog)
void ScheduleCatalogProcessing(WritableCatalog *catalog)
std::map< std::string, WritableCatalog * > catalog_processing_map_
void SetTTL(const uint64_t new_ttl)
int GetModifiedCatalogsRecursively(const Catalog *catalog, WritableCatalogList *result) const
assert((mem||(size==0))&&"Out Of Memory")
bool FindCatalog(const std::string &path, WritableCatalog **result, DirectoryEntry *dirent=NULL)
bool Commit(const bool stop_for_tweaks, const uint64_t manual_revision, manifest::Manifest *manifest)
upload::Spooler * spooler
pthread_mutex_t * catalog_processing_lock_
const unsigned balance_weight_
std::vector< WritableCatalog * > WritableCatalogList
void CloneTreeImpl(const PathString &source_dir, const std::string &dest_parent_dir, const NameString &dest_name)
const bool is_balanceable_
bool IsTransitionPoint(const std::string &mountpoint)
void EnforceSqliteMemLimit()
void CatalogUploadCallback(const upload::SpoolerResult &result, const CatalogUploadContext clg_upload_context)
void TouchDirectory(const DirectoryEntryBase &entry, const XattrList &xattrs, const std::string &directory_path)
static manifest::Manifest * CreateRepository(const std::string &dir_temp, const bool volatile_content, const std::string &voms_authz, upload::Spooler *spooler)
const unsigned max_weight_
void ActivateCatalog(Catalog *catalog)
WritableCatalogManager(const shash::Any &base_hash, const std::string &stratum0, const std::string &dir_temp, upload::Spooler *spooler, download::DownloadManager *download_manager, bool enforce_limits, const unsigned nested_kcatalog_limit, const unsigned root_kcatalog_limit, const unsigned file_mbyte_limit, perf::Statistics *statistics, bool is_balanceable, unsigned max_weight, unsigned min_weight, const std::string &dir_cache="")
void ShrinkHardlinkGroup(const std::string &remove_path)
bool CopyCatalogToLocalCache(const upload::SpoolerResult &result)
bool GetModifiedCatalogLeafsRecursively(Catalog *catalog, WritableCatalogList *result) const
pthread_mutex_t * sync_lock_
unsigned root_kcatalog_limit_
const std::string & dir_temp() const
Statistics statistics() const
CatalogInfo SnapshotCatalogsSerialized(const bool stop_for_tweaks)
CatalogInfo SnapshotCatalogs(const bool stop_for_tweaks)
bool SetVOMSAuthz(const std::string &voms_authz)
void Clone(const std::string from, const std::string to)
void RemoveFile(const std::string &file_path)
void CatalogUploadSerializedCallback(const upload::SpoolerResult &result, const CatalogUploadContext unused)
Catalog * GetRootCatalog() const
upload::Spooler * spooler_
void RemoveNestedCatalog(const std::string &mountpoint, const bool merge=true)
const unsigned min_weight_
static const std::string kCatalogFilename
std::vector< DirectoryEntryBase > DirectoryEntryBaseList
void AddFile(const DirectoryEntryBase &entry, const XattrList &xattrs, const std::string &parent_directory)
Future< CatalogInfo > * root_catalog_info
void SwapNestedCatalog(const string &mountpoint, const shash::Any &new_hash, const uint64_t new_size)
void GetModifiedCatalogLeafs(WritableCatalogList *result) const
Catalog * CreateCatalog(const PathString &mountpoint, const shash::Any &catalog_hash, Catalog *parent_catalog)
void FinalizeCatalog(WritableCatalog *catalog, const bool stop_for_tweaks)
void PrecalculateListings()
void CreateNestedCatalog(const std::string &mountpoint)
bool IsBalanceable() const
void GetModifiedCatalogs(WritableCatalogList *result) const
unsigned file_mbyte_limit_
CVMFS_EXPORT void LogCvmfs(const LogSource source, const int mask, const char *format,...)
const shash::Any & base_hash() const