bool SnapshotControl::SaveBloomFilter(BloomFilter<Checksum>* pbf, const string& bf_name) { if (!FileSystemHelper::GetInstance()->IsDirectoryExists(vm_path_)) FileSystemHelper::GetInstance()->CreateDirectory(vm_path_); if (FileSystemHelper::GetInstance()->IsFileExists(bf_name)) FileSystemHelper::GetInstance()->RemoveFile(bf_name); FileHelper* fh = FileSystemHelper::GetInstance()->CreateFileHelper(bf_name, O_WRONLY); fh->Create(); stringstream buffer; pbf->Serialize(buffer); LOG4CXX_DEBUG(logger_, "Bloom filter primary size " << buffer.str().size()); fh->Write((char *)buffer.str().c_str(), buffer.str().size()); fh->Close(); FileSystemHelper::GetInstance()->DestroyFileHelper(fh); return true; }
bool SnapshotControl::SaveSnapshotMeta() { if (!FileSystemHelper::GetInstance()->IsDirectoryExists(vm_path_)) FileSystemHelper::GetInstance()->CreateDirectory(vm_path_); if (FileSystemHelper::GetInstance()->IsFileExists(ss_meta_pathname_)) { LOG4CXX_WARN(logger_, "Sanpshot metadata exists, will re-create " << ss_meta_pathname_); FileSystemHelper::GetInstance()->RemoveFile(ss_meta_pathname_); } FileHelper* fh = FileSystemHelper::GetInstance()->CreateFileHelper(ss_meta_pathname_, O_WRONLY); fh->Create(); stringstream buffer; ss_meta_.Serialize(buffer); ss_meta_.SerializeRecipe(buffer); LOG4CXX_DEBUG(logger_, "save snapshot meta, size is" << buffer.str().size()); fh->Write((char *)buffer.str().c_str(), buffer.str().size()); fh->Close(); FileSystemHelper::GetInstance()->DestroyFileHelper(fh); return true; }