X-Git-Url: http://git.vrable.net/?a=blobdiff_plain;f=metadata.h;h=9325338a3231201a532958b142b862c340fa84fc;hb=0ac19625c9ad293791b93c931331aa5a0c876f36;hp=f86244c251da7a12f25b5aa59dc2c583a6462dc1;hpb=8df26e030a903119ee367ce30a49fc4adf3a74c7;p=cumulus.git diff --git a/metadata.h b/metadata.h index f86244c..9325338 100644 --- a/metadata.h +++ b/metadata.h @@ -23,29 +23,45 @@ struct MetadataItem { int offset; std::string text; + + bool reused; + ObjectReference ref; }; class MetadataWriter { public: MetadataWriter(TarSegmentStore *store, const char *path, const char *snapshot_name, const char *snapshot_scheme); - void add(const std::string& path, dictionary info); + void add(dictionary info); ObjectReference close(); + bool find(const std::string& path); + ObjectReference *old_ref() const { + return ObjectReference::parse(old_metadata_loc); + } + + dictionary get_old_metadata() const { return old_metadata; } + private: void metadata_flush(); + void read_statcache(); // Where are objects eventually written to? TarSegmentStore *store; // File descriptors for reading/writing local statcache data std::string statcache_path, statcache_tmp_path; - FILE *statcache_out; + FILE *statcache_in, *statcache_out; // Metadata not yet written out to the segment store size_t chunk_size; std::list items; std::ostringstream metadata_root; + + // Statcache information read back in from a previous run + bool old_metadata_eof; + dictionary old_metadata; + std::string old_metadata_loc; // Reference to where the metadata is found }; #endif // _LBS_METADATA_H