[Box Backup-commit] COMMIT r3592 - box/trunk/lib/backupstore
subversion at boxbackup.org
subversion at boxbackup.org
Fri Jul 31 07:39:27 BST 2015
Author: chris
Date: 2015-07-31 06:39:26 +0000 (Fri, 31 Jul 2015)
New Revision: 3592
Modified:
box/trunk/lib/backupstore/BackupStoreInfo.cpp
box/trunk/lib/backupstore/BackupStoreInfo.h
Log:
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.
Modified: box/trunk/lib/backupstore/BackupStoreInfo.cpp
===================================================================
--- box/trunk/lib/backupstore/BackupStoreInfo.cpp 2015-07-31 06:39:13 UTC (rev 3591)
+++ box/trunk/lib/backupstore/BackupStoreInfo.cpp 2015-07-31 06:39:26 UTC (rev 3592)
@@ -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 @@
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 @@
// 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 @@
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 @@
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;
}
Modified: box/trunk/lib/backupstore/BackupStoreInfo.h
===================================================================
--- box/trunk/lib/backupstore/BackupStoreInfo.h 2015-07-31 06:39:13 UTC (rev 3591)
+++ box/trunk/lib/backupstore/BackupStoreInfo.h 2015-07-31 06:39:26 UTC (rev 3592)
@@ -80,7 +80,10 @@
public:
// Create a New account, saving a blank info object to the disc
- static void CreateNew(int32_t AccountID, const std::string &rRootDir, int DiscSet, int64_t BlockSoftLimit, int64_t BlockHardLimit);
+ static void CreateNew(int32_t AccountID, const std::string &rRootDir, int DiscSet,
+ int64_t BlockSoftLimit, int64_t BlockHardLimit);
+ BackupStoreInfo(int32_t AccountID, const std::string &FileName,
+ int64_t BlockSoftLimit, int64_t BlockHardLimit);
// Load it from the store
static std::auto_ptr<BackupStoreInfo> Load(int32_t AccountID, const std::string &rRootDir, int DiscSet, bool ReadOnly, int64_t *pRevisionID = 0);
@@ -94,6 +97,7 @@
// Save modified infomation back to store
void Save(bool allowOverwrite = true);
+ void Save(IOStream& rOutStream);
// Data access functions
int32_t GetAccountID() const {return mAccountID;}
More information about the Boxbackup-commit
mailing list