diff options
author | Chris Wilson <chris+github@qwirx.com> | 2015-07-31 06:39:26 +0000 |
---|---|---|
committer | Chris Wilson <chris+github@qwirx.com> | 2015-07-31 06:39:26 +0000 |
commit | 33305e22554bff7a14a8f8c3156b6eed8f184d52 (patch) | |
tree | 729c9eb2de6060ae61353b3e78c50beacc86835c /lib/backupstore/BackupStoreInfo.cpp | |
parent | 7bd7cfd109f11326d17d098973ac6a942aaf1ba5 (diff) |
Refactor BackupStoreInfo to allow creating them without RaidFiles.
They can now be created using a constructor, and written to any IOStream.
Needed for writing them to an S3Store.
Diffstat (limited to 'lib/backupstore/BackupStoreInfo.cpp')
-rw-r--r-- | lib/backupstore/BackupStoreInfo.cpp | 79 |
1 files changed, 55 insertions, 24 deletions
diff --git a/lib/backupstore/BackupStoreInfo.cpp b/lib/backupstore/BackupStoreInfo.cpp index fd12e2cf..efe3f7bb 100644 --- a/lib/backupstore/BackupStoreInfo.cpp +++ b/lib/backupstore/BackupStoreInfo.cpp @@ -34,22 +34,24 @@ // // -------------------------------------------------------------------------- BackupStoreInfo::BackupStoreInfo() - : mAccountID(-1), - mDiscSet(-1), - mReadOnly(true), - mIsModified(false), - mClientStoreMarker(0), - mLastObjectIDUsed(-1), - mBlocksUsed(0), - mBlocksInCurrentFiles(0), - mBlocksInOldFiles(0), - mBlocksInDeletedFiles(0), - mBlocksInDirectories(0), - mNumCurrentFiles(0), - mNumOldFiles(0), - mNumDeletedFiles(0), - mNumDirectories(0), - mAccountEnabled(true) +: mAccountID(-1), + mDiscSet(-1), + mReadOnly(true), + mIsModified(false), + mClientStoreMarker(0), + mLastObjectIDUsed(-1), + mBlocksUsed(0), + mBlocksInCurrentFiles(0), + mBlocksInOldFiles(0), + mBlocksInDeletedFiles(0), + mBlocksInDirectories(0), + mBlocksSoftLimit(0), + mBlocksHardLimit(0), + mNumCurrentFiles(0), + mNumOldFiles(0), + mNumDeletedFiles(0), + mNumDirectories(0), + mAccountEnabled(true) { } @@ -92,6 +94,31 @@ void BackupStoreInfo::CreateNew(int32_t AccountID, const std::string &rRootDir, info.Save(false); } +BackupStoreInfo::BackupStoreInfo(int32_t AccountID, const std::string &FileName, + int64_t BlockSoftLimit, int64_t BlockHardLimit) +: mAccountID(AccountID), + mDiscSet(-1), + mFilename(FileName), + mReadOnly(false), + mIsModified(false), + mClientStoreMarker(0), + mLastObjectIDUsed(0), + mBlocksUsed(0), + mBlocksInCurrentFiles(0), + mBlocksInOldFiles(0), + mBlocksInDeletedFiles(0), + mBlocksInDirectories(0), + mBlocksSoftLimit(BlockSoftLimit), + mBlocksHardLimit(BlockHardLimit), + mNumCurrentFiles(0), + mNumOldFiles(0), + mNumDeletedFiles(0), + mNumDirectories(0), + mAccountEnabled(true) +{ + mExtraData.SetForReading(); // extra data is empty in this case +} + // -------------------------------------------------------------------------- // // Function @@ -344,11 +371,18 @@ void BackupStoreInfo::Save(bool allowOverwrite) // Then... open a write file RaidFileWrite rf(mDiscSet, mFilename); rf.Open(allowOverwrite); + Save(rf); + // Commit it to disc, converting it to RAID now + rf.Commit(true); +} + +void BackupStoreInfo::Save(IOStream& rOutStream) +{ // Make header int32_t magic = htonl(INFO_MAGIC_VALUE_2); - rf.Write(&magic, sizeof(magic)); - Archive archive(rf, IOStream::TimeOutInfinite); + rOutStream.Write(&magic, sizeof(magic)); + Archive archive(rOutStream, IOStream::TimeOutInfinite); archive.Write(mAccountID); archive.Write(mAccountName); @@ -389,8 +423,8 @@ void BackupStoreInfo::Save(bool allowOverwrite) i++; } - // Write - rf.Write(objs, b * sizeof(int64_t)); + // Write + rOutStream.Write(objs, b * sizeof(int64_t)); // Number saved tosave -= b; @@ -400,12 +434,9 @@ void BackupStoreInfo::Save(bool allowOverwrite) archive.Write(mAccountEnabled); mExtraData.Seek(0, IOStream::SeekType_Absolute); - mExtraData.CopyStreamTo(rf); + mExtraData.CopyStreamTo(rOutStream); mExtraData.Seek(0, IOStream::SeekType_Absolute); - // Commit it to disc, converting it to RAID now - rf.Commit(true); - // Mark is as not modified mIsModified = false; } |