| Index: chrome/browser/sync_file_system/drive_backend/metadata_database_index.cc
|
| diff --git a/chrome/browser/sync_file_system/drive_backend/metadata_database_index.cc b/chrome/browser/sync_file_system/drive_backend/metadata_database_index.cc
|
| index 3e19f0feea9e8feab0e82bf50ea8bd6ff044d12a..cdc6c3e5dbeb83d3029c9da6c5e3cf17c60ee0d6 100644
|
| --- a/chrome/browser/sync_file_system/drive_backend/metadata_database_index.cc
|
| +++ b/chrome/browser/sync_file_system/drive_backend/metadata_database_index.cc
|
| @@ -10,6 +10,7 @@
|
| #include "base/threading/thread_restrictions.h"
|
| #include "chrome/browser/sync_file_system/drive_backend/drive_backend_constants.h"
|
| #include "chrome/browser/sync_file_system/drive_backend/drive_backend_util.h"
|
| +#include "chrome/browser/sync_file_system/drive_backend/leveldb_wrapper.h"
|
| #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h"
|
| #include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h"
|
| #include "chrome/browser/sync_file_system/logger.h"
|
| @@ -76,12 +77,11 @@ typename Container::mapped_type FindItem(
|
| return found->second;
|
| }
|
|
|
| -void ReadDatabaseContents(leveldb::DB* db,
|
| - DatabaseContents* contents) {
|
| +void ReadDatabaseContents(LevelDBWrapper* db, DatabaseContents* contents) {
|
| DCHECK(db);
|
| DCHECK(contents);
|
|
|
| - scoped_ptr<leveldb::Iterator> itr(db->NewIterator(leveldb::ReadOptions()));
|
| + scoped_ptr<LevelDBWrapper::Iterator> itr(db->NewIterator());
|
| for (itr->SeekToFirst(); itr->Valid(); itr->Next()) {
|
| std::string key = itr->key().ToString();
|
| std::string value = itr->value().ToString();
|
| @@ -122,7 +122,7 @@ void ReadDatabaseContents(leveldb::DB* db,
|
|
|
| void RemoveUnreachableItems(DatabaseContents* contents,
|
| int64 sync_root_tracker_id,
|
| - leveldb::WriteBatch* batch) {
|
| + LevelDBWrapper* db) {
|
| typedef std::map<int64, std::set<int64> > ChildTrackersByParent;
|
| ChildTrackersByParent trackers_by_parent;
|
|
|
| @@ -172,7 +172,7 @@ void RemoveUnreachableItems(DatabaseContents* contents,
|
| reachable_trackers.push_back(tracker);
|
| contents->file_trackers[i] = NULL;
|
| } else {
|
| - PutFileTrackerDeletionToBatch(tracker->tracker_id(), batch);
|
| + PutFileTrackerDeletionToDB(tracker->tracker_id(), db);
|
| }
|
| }
|
| contents->file_trackers = reachable_trackers.Pass();
|
| @@ -190,7 +190,7 @@ void RemoveUnreachableItems(DatabaseContents* contents,
|
| referred_file_metadata.push_back(metadata);
|
| contents->file_metadata[i] = NULL;
|
| } else {
|
| - PutFileMetadataDeletionToBatch(metadata->file_id(), batch);
|
| + PutFileMetadataDeletionToDB(metadata->file_id(), db);
|
| }
|
| }
|
| contents->file_metadata = referred_file_metadata.Pass();
|
| @@ -200,20 +200,19 @@ void RemoveUnreachableItems(DatabaseContents* contents,
|
|
|
| // static
|
| scoped_ptr<MetadataDatabaseIndex>
|
| -MetadataDatabaseIndex::Create(leveldb::DB* db, leveldb::WriteBatch* batch) {
|
| +MetadataDatabaseIndex::Create(LevelDBWrapper* db) {
|
| DCHECK(db);
|
| - DCHECK(batch);
|
|
|
| scoped_ptr<ServiceMetadata> service_metadata = InitializeServiceMetadata(db);
|
| DatabaseContents contents;
|
|
|
| - PutVersionToBatch(kCurrentDatabaseVersion, batch);
|
| + PutVersionToDB(kCurrentDatabaseVersion, db);
|
| ReadDatabaseContents(db, &contents);
|
| RemoveUnreachableItems(&contents,
|
| service_metadata->sync_root_tracker_id(),
|
| - batch);
|
| + db);
|
|
|
| - scoped_ptr<MetadataDatabaseIndex> index(new MetadataDatabaseIndex);
|
| + scoped_ptr<MetadataDatabaseIndex> index(new MetadataDatabaseIndex(db));
|
| index->Initialize(service_metadata.Pass(), &contents);
|
| return index.Pass();
|
| }
|
| @@ -221,7 +220,7 @@ MetadataDatabaseIndex::Create(leveldb::DB* db, leveldb::WriteBatch* batch) {
|
| // static
|
| scoped_ptr<MetadataDatabaseIndex>
|
| MetadataDatabaseIndex::CreateForTesting(DatabaseContents* contents) {
|
| - scoped_ptr<MetadataDatabaseIndex> index(new MetadataDatabaseIndex);
|
| + scoped_ptr<MetadataDatabaseIndex> index(new MetadataDatabaseIndex(NULL));
|
| index->Initialize(make_scoped_ptr(new ServiceMetadata), contents);
|
| return index.Pass();
|
| }
|
| @@ -232,11 +231,11 @@ void MetadataDatabaseIndex::Initialize(
|
| service_metadata_ = service_metadata.Pass();
|
|
|
| for (size_t i = 0; i < contents->file_metadata.size(); ++i)
|
| - StoreFileMetadata(make_scoped_ptr(contents->file_metadata[i]), NULL);
|
| + StoreFileMetadata(make_scoped_ptr(contents->file_metadata[i]));
|
| contents->file_metadata.weak_clear();
|
|
|
| for (size_t i = 0; i < contents->file_trackers.size(); ++i)
|
| - StoreFileTracker(make_scoped_ptr(contents->file_trackers[i]), NULL);
|
| + StoreFileTracker(make_scoped_ptr(contents->file_trackers[i]));
|
| contents->file_trackers.weak_clear();
|
|
|
| UMA_HISTOGRAM_COUNTS("SyncFileSystem.MetadataNumber", metadata_by_id_.size());
|
| @@ -245,7 +244,7 @@ void MetadataDatabaseIndex::Initialize(
|
| app_root_by_app_id_.size());
|
| }
|
|
|
| -MetadataDatabaseIndex::MetadataDatabaseIndex() {}
|
| +MetadataDatabaseIndex::MetadataDatabaseIndex(LevelDBWrapper* db) : db_(db) {}
|
| MetadataDatabaseIndex::~MetadataDatabaseIndex() {}
|
|
|
| bool MetadataDatabaseIndex::GetFileMetadata(
|
| @@ -269,8 +268,8 @@ bool MetadataDatabaseIndex::GetFileTracker(
|
| }
|
|
|
| void MetadataDatabaseIndex::StoreFileMetadata(
|
| - scoped_ptr<FileMetadata> metadata, leveldb::WriteBatch* batch) {
|
| - PutFileMetadataToBatch(*metadata.get(), batch);
|
| + scoped_ptr<FileMetadata> metadata) {
|
| + PutFileMetadataToDB(*metadata.get(), db_);
|
| if (!metadata) {
|
| NOTREACHED();
|
| return;
|
| @@ -280,9 +279,9 @@ void MetadataDatabaseIndex::StoreFileMetadata(
|
| metadata_by_id_.set(file_id, metadata.Pass());
|
| }
|
|
|
| -void MetadataDatabaseIndex::StoreFileTracker(scoped_ptr<FileTracker> tracker,
|
| - leveldb::WriteBatch* batch) {
|
| - PutFileTrackerToBatch(*tracker.get(), batch);
|
| +void MetadataDatabaseIndex::StoreFileTracker(
|
| + scoped_ptr<FileTracker> tracker) {
|
| + PutFileTrackerToDB(*tracker.get(), db_);
|
| if (!tracker) {
|
| NOTREACHED();
|
| return;
|
| @@ -312,15 +311,13 @@ void MetadataDatabaseIndex::StoreFileTracker(scoped_ptr<FileTracker> tracker,
|
| tracker_by_id_.set(tracker_id, tracker.Pass());
|
| }
|
|
|
| -void MetadataDatabaseIndex::RemoveFileMetadata(const std::string& file_id,
|
| - leveldb::WriteBatch* batch) {
|
| - PutFileMetadataDeletionToBatch(file_id, batch);
|
| +void MetadataDatabaseIndex::RemoveFileMetadata(const std::string& file_id) {
|
| + PutFileMetadataDeletionToDB(file_id, db_);
|
| metadata_by_id_.erase(file_id);
|
| }
|
|
|
| -void MetadataDatabaseIndex::RemoveFileTracker(int64 tracker_id,
|
| - leveldb::WriteBatch* batch) {
|
| - PutFileTrackerDeletionToBatch(tracker_id, batch);
|
| +void MetadataDatabaseIndex::RemoveFileTracker(int64 tracker_id) {
|
| + PutFileTrackerDeletionToDB(tracker_id, db_);
|
|
|
| FileTracker* tracker = tracker_by_id_.get(tracker_id);
|
| if (!tracker) {
|
| @@ -393,8 +390,7 @@ int64 MetadataDatabaseIndex::PickDirtyTracker() const {
|
| return *dirty_trackers_.begin();
|
| }
|
|
|
| -void MetadataDatabaseIndex::DemoteDirtyTracker(
|
| - int64 tracker_id, leveldb::WriteBatch* /* unused_batch */) {
|
| +void MetadataDatabaseIndex::DemoteDirtyTracker(int64 tracker_id) {
|
| if (dirty_trackers_.erase(tracker_id))
|
| demoted_dirty_trackers_.insert(tracker_id);
|
| }
|
| @@ -403,8 +399,7 @@ bool MetadataDatabaseIndex::HasDemotedDirtyTracker() const {
|
| return !demoted_dirty_trackers_.empty();
|
| }
|
|
|
| -void MetadataDatabaseIndex::PromoteDemotedDirtyTrackers(
|
| - leveldb::WriteBatch* /* unused_batch */) {
|
| +void MetadataDatabaseIndex::PromoteDemotedDirtyTrackers() {
|
| dirty_trackers_.insert(demoted_dirty_trackers_.begin(),
|
| demoted_dirty_trackers_.end());
|
| demoted_dirty_trackers_.clear();
|
| @@ -423,21 +418,21 @@ size_t MetadataDatabaseIndex::CountFileTracker() const {
|
| }
|
|
|
| void MetadataDatabaseIndex::SetSyncRootTrackerID(
|
| - int64 sync_root_id, leveldb::WriteBatch* batch) const {
|
| + int64 sync_root_id) const {
|
| service_metadata_->set_sync_root_tracker_id(sync_root_id);
|
| - PutServiceMetadataToBatch(*service_metadata_, batch);
|
| + PutServiceMetadataToDB(*service_metadata_, db_);
|
| }
|
|
|
| void MetadataDatabaseIndex::SetLargestChangeID(
|
| - int64 largest_change_id, leveldb::WriteBatch* batch) const {
|
| + int64 largest_change_id) const {
|
| service_metadata_->set_largest_change_id(largest_change_id);
|
| - PutServiceMetadataToBatch(*service_metadata_, batch);
|
| + PutServiceMetadataToDB(*service_metadata_, db_);
|
| }
|
|
|
| void MetadataDatabaseIndex::SetNextTrackerID(
|
| - int64 next_tracker_id, leveldb::WriteBatch* batch) const {
|
| + int64 next_tracker_id) const {
|
| service_metadata_->set_next_tracker_id(next_tracker_id);
|
| - PutServiceMetadataToBatch(*service_metadata_, batch);
|
| + PutServiceMetadataToDB(*service_metadata_, db_);
|
| }
|
|
|
| int64 MetadataDatabaseIndex::GetSyncRootTrackerID() const {
|
|
|