Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(490)

Side by Side Diff: chrome/browser/sync_file_system/drive_backend/metadata_database_index.cc

Issue 388913005: [SyncFS] Migrate ServiceMetadata from MDDB to MDDBIndex. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove usage of undefined variable Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/sync_file_system/drive_backend/metadata_database_index. h" 5 #include "chrome/browser/sync_file_system/drive_backend/metadata_database_index. h"
6 6
7 #include "base/metrics/histogram.h" 7 #include "base/metrics/histogram.h"
8 #include "base/strings/string_number_conversions.h" 8 #include "base/strings/string_number_conversions.h"
9 #include "base/strings/string_util.h" 9 #include "base/strings/string_util.h"
10 #include "base/threading/thread_restrictions.h"
10 #include "chrome/browser/sync_file_system/drive_backend/drive_backend_constants. h" 11 #include "chrome/browser/sync_file_system/drive_backend/drive_backend_constants. h"
11 #include "chrome/browser/sync_file_system/drive_backend/drive_backend_util.h" 12 #include "chrome/browser/sync_file_system/drive_backend/drive_backend_util.h"
12 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h" 13 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h"
13 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h" 14 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h"
14 #include "chrome/browser/sync_file_system/logger.h" 15 #include "chrome/browser/sync_file_system/logger.h"
15 #include "third_party/leveldatabase/src/include/leveldb/db.h" 16 #include "third_party/leveldatabase/src/include/leveldb/db.h"
16 #include "third_party/leveldatabase/src/include/leveldb/write_batch.h" 17 #include "third_party/leveldatabase/src/include/leveldb/write_batch.h"
17 18
18 // LevelDB database schema 19 // LevelDB database schema
19 // ======================= 20 // =======================
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 PutFileMetadataDeletionToBatch(metadata->file_id(), batch); 193 PutFileMetadataDeletionToBatch(metadata->file_id(), batch);
193 } 194 }
194 } 195 }
195 contents->file_metadata = referred_file_metadata.Pass(); 196 contents->file_metadata = referred_file_metadata.Pass();
196 } 197 }
197 198
198 } // namespace 199 } // namespace
199 200
200 // static 201 // static
201 scoped_ptr<MetadataDatabaseIndex> 202 scoped_ptr<MetadataDatabaseIndex>
202 MetadataDatabaseIndex::Create(leveldb::DB* db, 203 MetadataDatabaseIndex::Create(leveldb::DB* db, leveldb::WriteBatch* batch) {
203 int64 sync_root_tracker_id, 204 DCHECK(db);
204 leveldb::WriteBatch* batch) { 205 DCHECK(batch);
206
207 scoped_ptr<ServiceMetadata> service_metadata =
208 InitializeServiceMetadata(db, batch);
209
205 DatabaseContents contents; 210 DatabaseContents contents;
206 ReadDatabaseContents(db, &contents); 211 ReadDatabaseContents(db, &contents);
207 RemoveUnreachableItems(&contents, sync_root_tracker_id, batch); 212 RemoveUnreachableItems(&contents,
213 service_metadata->sync_root_tracker_id(),
214 batch);
208 215
209 scoped_ptr<MetadataDatabaseIndex> index(new MetadataDatabaseIndex); 216 scoped_ptr<MetadataDatabaseIndex> index(new MetadataDatabaseIndex);
210 index->Initialize(&contents); 217 index->Initialize(service_metadata.Pass(), &contents);
211 return index.Pass(); 218 return index.Pass();
212 } 219 }
213 220
214 // static 221 // static
215 scoped_ptr<MetadataDatabaseIndex> 222 scoped_ptr<MetadataDatabaseIndex>
216 MetadataDatabaseIndex::CreateForTesting(DatabaseContents* contents) { 223 MetadataDatabaseIndex::CreateForTesting(DatabaseContents* contents) {
217 scoped_ptr<MetadataDatabaseIndex> index(new MetadataDatabaseIndex); 224 scoped_ptr<MetadataDatabaseIndex> index(new MetadataDatabaseIndex);
218 index->Initialize(contents); 225 index->Initialize(scoped_ptr<ServiceMetadata>(new ServiceMetadata), contents);
tzik 2014/07/15 07:17:58 can be make_scoped_ptr?
219 return index.Pass(); 226 return index.Pass();
220 } 227 }
221 228
222 void MetadataDatabaseIndex::Initialize(DatabaseContents* contents) { 229 void MetadataDatabaseIndex::Initialize(
230 scoped_ptr<ServiceMetadata> service_metadata,
231 DatabaseContents* contents) {
232 service_metadata_ = service_metadata.Pass();
233
223 for (size_t i = 0; i < contents->file_metadata.size(); ++i) 234 for (size_t i = 0; i < contents->file_metadata.size(); ++i)
224 StoreFileMetadata(make_scoped_ptr(contents->file_metadata[i]), NULL); 235 StoreFileMetadata(make_scoped_ptr(contents->file_metadata[i]), NULL);
225 contents->file_metadata.weak_clear(); 236 contents->file_metadata.weak_clear();
226 237
227 for (size_t i = 0; i < contents->file_trackers.size(); ++i) 238 for (size_t i = 0; i < contents->file_trackers.size(); ++i)
228 StoreFileTracker(make_scoped_ptr(contents->file_trackers[i]), NULL); 239 StoreFileTracker(make_scoped_ptr(contents->file_trackers[i]), NULL);
229 contents->file_trackers.weak_clear(); 240 contents->file_trackers.weak_clear();
230 241
231 UMA_HISTOGRAM_COUNTS("SyncFileSystem.MetadataNumber", metadata_by_id_.size()); 242 UMA_HISTOGRAM_COUNTS("SyncFileSystem.MetadataNumber", metadata_by_id_.size());
232 UMA_HISTOGRAM_COUNTS("SyncFileSystem.TrackerNumber", tracker_by_id_.size()); 243 UMA_HISTOGRAM_COUNTS("SyncFileSystem.TrackerNumber", tracker_by_id_.size());
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 } 415 }
405 416
406 size_t MetadataDatabaseIndex::CountFileMetadata() const { 417 size_t MetadataDatabaseIndex::CountFileMetadata() const {
407 return metadata_by_id_.size(); 418 return metadata_by_id_.size();
408 } 419 }
409 420
410 size_t MetadataDatabaseIndex::CountFileTracker() const { 421 size_t MetadataDatabaseIndex::CountFileTracker() const {
411 return tracker_by_id_.size(); 422 return tracker_by_id_.size();
412 } 423 }
413 424
425 void MetadataDatabaseIndex::SetSyncRootTrackerID(
426 int64 sync_root_id, leveldb::WriteBatch* batch) const {
427 service_metadata_->set_sync_root_tracker_id(sync_root_id);
428 if (batch)
429 PutServiceMetadataToBatch(*service_metadata_, batch);
430 }
431
432 void MetadataDatabaseIndex::SetLargestChangeID(
433 int64 largest_change_id, leveldb::WriteBatch* batch) const {
434 service_metadata_->set_largest_change_id(largest_change_id);
435 if (batch)
436 PutServiceMetadataToBatch(*service_metadata_, batch);
437 }
438
439 void MetadataDatabaseIndex::SetNextTrackerID(
440 int64 next_tracker_id, leveldb::WriteBatch* batch) const {
441 service_metadata_->set_next_tracker_id(next_tracker_id);
442 if (batch)
443 PutServiceMetadataToBatch(*service_metadata_, batch);
444 }
445
446 int64 MetadataDatabaseIndex::GetSyncRootTrackerID() const {
447 if (!service_metadata_->has_sync_root_tracker_id())
448 return kInvalidTrackerID;
449 return service_metadata_->sync_root_tracker_id();
450 }
451
452 int64 MetadataDatabaseIndex::GetLargestChangeID() const {
453 if (!service_metadata_->has_largest_change_id())
454 return kInvalidTrackerID;
455 return service_metadata_->largest_change_id();
456 }
457
458 int64 MetadataDatabaseIndex::GetNextTrackerID() const {
459 if (!service_metadata_->has_next_tracker_id())
460 return kInvalidTrackerID;
tzik 2014/07/15 07:17:58 could you put NOTREACHED for this case?
peria 2014/07/15 09:00:58 Done.
461 return service_metadata_->next_tracker_id();
462 }
463
414 std::vector<std::string> MetadataDatabaseIndex::GetRegisteredAppIDs() const { 464 std::vector<std::string> MetadataDatabaseIndex::GetRegisteredAppIDs() const {
415 std::vector<std::string> result; 465 std::vector<std::string> result;
416 result.reserve(app_root_by_app_id_.size()); 466 result.reserve(app_root_by_app_id_.size());
417 for (TrackerIDByAppID::const_iterator itr = app_root_by_app_id_.begin(); 467 for (TrackerIDByAppID::const_iterator itr = app_root_by_app_id_.begin();
418 itr != app_root_by_app_id_.end(); ++itr) 468 itr != app_root_by_app_id_.end(); ++itr)
419 result.push_back(itr->first); 469 result.push_back(itr->first);
420 return result; 470 return result;
421 } 471 }
422 472
423 std::vector<int64> MetadataDatabaseIndex::GetAllTrackerIDs() const { 473 std::vector<int64> MetadataDatabaseIndex::GetAllTrackerIDs() const {
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after
689 739
690 DVLOG(3) << " Remove from dirty_trackers_: " << tracker_id; 740 DVLOG(3) << " Remove from dirty_trackers_: " << tracker_id;
691 dirty_trackers_.erase(tracker_id); 741 dirty_trackers_.erase(tracker_id);
692 742
693 demoted_dirty_trackers_.erase(tracker_id); 743 demoted_dirty_trackers_.erase(tracker_id);
694 } 744 }
695 } 745 }
696 746
697 } // namespace drive_backend 747 } // namespace drive_backend
698 } // namespace sync_file_system 748 } // namespace sync_file_system
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698