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

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

Issue 377463002: [SyncFS] Handle dirty tracker IDs in MetadataDatabaseIndexOnDisk (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Work for comments 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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.h" 5 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <stack> 8 #include <stack>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 25 matching lines...) Expand all
36 #include "third_party/leveldatabase/src/include/leveldb/env.h" 36 #include "third_party/leveldatabase/src/include/leveldb/env.h"
37 #include "third_party/leveldatabase/src/include/leveldb/status.h" 37 #include "third_party/leveldatabase/src/include/leveldb/status.h"
38 #include "third_party/leveldatabase/src/include/leveldb/write_batch.h" 38 #include "third_party/leveldatabase/src/include/leveldb/write_batch.h"
39 #include "webkit/common/fileapi/file_system_util.h" 39 #include "webkit/common/fileapi/file_system_util.h"
40 40
41 namespace sync_file_system { 41 namespace sync_file_system {
42 namespace drive_backend { 42 namespace drive_backend {
43 43
44 namespace { 44 namespace {
45 45
46 void EmptyStatusCallback(SyncStatusCode status) {}
47
46 std::string FileKindToString(FileKind file_kind) { 48 std::string FileKindToString(FileKind file_kind) {
47 switch (file_kind) { 49 switch (file_kind) {
48 case FILE_KIND_UNSUPPORTED: 50 case FILE_KIND_UNSUPPORTED:
49 return "unsupported"; 51 return "unsupported";
50 case FILE_KIND_FILE: 52 case FILE_KIND_FILE:
51 return "file"; 53 return "file";
52 case FILE_KIND_FOLDER: 54 case FILE_KIND_FOLDER:
53 return "folder"; 55 return "folder";
54 } 56 }
55 57
(...skipping 1304 matching lines...) Expand 10 before | Expand all | Expand 10 after
1360 tracker_to_be_activated->set_dirty(false); 1362 tracker_to_be_activated->set_dirty(false);
1361 1363
1362 index_->StoreFileTracker(tracker_to_be_activated.Pass(), batch.get()); 1364 index_->StoreFileTracker(tracker_to_be_activated.Pass(), batch.get());
1363 1365
1364 WriteToDatabase(batch.Pass(), callback); 1366 WriteToDatabase(batch.Pass(), callback);
1365 return ACTIVATION_PENDING; 1367 return ACTIVATION_PENDING;
1366 } 1368 }
1367 1369
1368 void MetadataDatabase::LowerTrackerPriority(int64 tracker_id) { 1370 void MetadataDatabase::LowerTrackerPriority(int64 tracker_id) {
1369 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread()); 1371 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread());
1370 index_->DemoteDirtyTracker(tracker_id); 1372 scoped_ptr<leveldb::WriteBatch> batch(new leveldb::WriteBatch);
1373 index_->DemoteDirtyTracker(tracker_id, batch.get());
1374 WriteToDatabase(batch.Pass(), base::Bind(&EmptyStatusCallback));
1371 } 1375 }
1372 1376
1373 void MetadataDatabase::PromoteLowerPriorityTrackersToNormal() { 1377 void MetadataDatabase::PromoteLowerPriorityTrackersToNormal() {
1374 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread()); 1378 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread());
1375 index_->PromoteDemotedDirtyTrackers(); 1379 scoped_ptr<leveldb::WriteBatch> batch(new leveldb::WriteBatch);
1380 index_->PromoteDemotedDirtyTrackers(batch.get());
1381 WriteToDatabase(batch.Pass(), base::Bind(&EmptyStatusCallback));
1376 } 1382 }
1377 1383
1378 bool MetadataDatabase::GetNormalPriorityDirtyTracker( 1384 bool MetadataDatabase::GetNormalPriorityDirtyTracker(
1379 FileTracker* tracker_out) const { 1385 FileTracker* tracker_out) const {
1380 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread()); 1386 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread());
1381 1387
1382 int64 dirty_tracker_id = index_->PickDirtyTracker(); 1388 int64 dirty_tracker_id = index_->PickDirtyTracker();
1383 if (!dirty_tracker_id) 1389 if (!dirty_tracker_id)
1384 return false; 1390 return false;
1385 1391
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after
1786 const SyncStatusCallback& callback) { 1792 const SyncStatusCallback& callback) {
1787 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread()); 1793 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread());
1788 1794
1789 if (!batch) { 1795 if (!batch) {
1790 worker_task_runner_->PostTask( 1796 worker_task_runner_->PostTask(
1791 FROM_HERE, 1797 FROM_HERE,
1792 base::Bind(callback, SYNC_STATUS_OK)); 1798 base::Bind(callback, SYNC_STATUS_OK));
1793 return; 1799 return;
1794 } 1800 }
1795 1801
1802 // TODO(peria): Write to DB on disk synchronously.
1796 file_task_runner_->PostTask( 1803 file_task_runner_->PostTask(
1797 FROM_HERE, 1804 FROM_HERE,
1798 base::Bind(&WriteOnFileTaskRunner, 1805 base::Bind(&WriteOnFileTaskRunner,
1799 base::Unretained(db_.get()), 1806 base::Unretained(db_.get()),
1800 base::Passed(&batch), 1807 base::Passed(&batch),
1801 worker_task_runner_, 1808 worker_task_runner_,
1802 callback)); 1809 callback));
1803 } 1810 }
1804 1811
1805 scoped_ptr<base::ListValue> MetadataDatabase::DumpFiles( 1812 scoped_ptr<base::ListValue> MetadataDatabase::DumpFiles(
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
2016 index_->StoreFileMetadata(app_root_metadata.Pass(), batch); 2023 index_->StoreFileMetadata(app_root_metadata.Pass(), batch);
2017 index_->StoreFileTracker(app_root_tracker.Pass(), batch); 2024 index_->StoreFileTracker(app_root_tracker.Pass(), batch);
2018 } 2025 }
2019 2026
2020 void MetadataDatabase::DetachFromSequence() { 2027 void MetadataDatabase::DetachFromSequence() {
2021 worker_sequence_checker_.DetachFromSequence(); 2028 worker_sequence_checker_.DetachFromSequence();
2022 } 2029 }
2023 2030
2024 } // namespace drive_backend 2031 } // namespace drive_backend
2025 } // namespace sync_file_system 2032 } // namespace sync_file_system
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698