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

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

Issue 428063002: [SyncFS] Replace leveldb classes with LevelDBWrapper (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 6 years, 4 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 #ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_METADATA_DATABASE_H_ 5 #ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_METADATA_DATABASE_H_
6 #define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_METADATA_DATABASE_H_ 6 #define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_METADATA_DATABASE_H_
7 7
8 #include <map> 8 #include <map>
9 #include <set> 9 #include <set>
10 #include <string> 10 #include <string>
(...skipping 11 matching lines...) Expand all
22 #include "chrome/browser/sync_file_system/sync_callbacks.h" 22 #include "chrome/browser/sync_file_system/sync_callbacks.h"
23 #include "chrome/browser/sync_file_system/sync_status_code.h" 23 #include "chrome/browser/sync_file_system/sync_status_code.h"
24 24
25 namespace base { 25 namespace base {
26 class FilePath; 26 class FilePath;
27 class SequencedTaskRunner; 27 class SequencedTaskRunner;
28 class SingleThreadTaskRunner; 28 class SingleThreadTaskRunner;
29 } 29 }
30 30
31 namespace leveldb { 31 namespace leveldb {
32 class DB;
33 class Env; 32 class Env;
34 class WriteBatch;
35 } 33 }
36 34
37 namespace google_apis { 35 namespace google_apis {
38 class ChangeResource; 36 class ChangeResource;
39 class FileResource; 37 class FileResource;
40 class ResourceEntry; 38 class ResourceEntry;
41 } 39 }
42 40
43 namespace tracked_objects { 41 namespace tracked_objects {
44 class Location; 42 class Location;
45 } 43 }
46 44
47 namespace sync_file_system { 45 namespace sync_file_system {
48 namespace drive_backend { 46 namespace drive_backend {
49 47
50 class FileDetails; 48 class FileDetails;
51 class FileMetadata; 49 class FileMetadata;
52 class FileTracker; 50 class FileTracker;
51 class LevelDBWrapper;
53 class MetadataDatabaseIndexInterface; 52 class MetadataDatabaseIndexInterface;
54 class ServiceMetadata; 53 class ServiceMetadata;
55 54
56 // MetadataDatabase holds and maintains a LevelDB instance and its indexes, 55 // MetadataDatabase holds and maintains a LevelDB instance and its indexes,
57 // which holds 1)ServiceMetadata, 2)FileMetadata and 3)FileTracker. 56 // which holds 1)ServiceMetadata, 2)FileMetadata and 3)FileTracker.
58 // 1) ServiceMetadata is a singleton in the database which holds information for 57 // 1) ServiceMetadata is a singleton in the database which holds information for
59 // the backend. 58 // the backend.
60 // 2) FileMetadata represents a remote-side file and holds latest known 59 // 2) FileMetadata represents a remote-side file and holds latest known
61 // metadata of the remote file. 60 // metadata of the remote file.
62 // 3) FileTracker represents a synced or to-be-synced file and maintains 61 // 3) FileTracker represents a synced or to-be-synced file and maintains
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 // The entry point of the MetadataDatabase for production code. 131 // The entry point of the MetadataDatabase for production code.
133 // If |env_override| is non-NULL, internal LevelDB uses |env_override| instead 132 // If |env_override| is non-NULL, internal LevelDB uses |env_override| instead
134 // of leveldb::Env::Default(). Use leveldb::MemEnv in test code for faster 133 // of leveldb::Env::Default(). Use leveldb::MemEnv in test code for faster
135 // testing. 134 // testing.
136 static void Create(base::SequencedTaskRunner* worker_task_runner, 135 static void Create(base::SequencedTaskRunner* worker_task_runner,
137 base::SequencedTaskRunner* file_task_runner, 136 base::SequencedTaskRunner* file_task_runner,
138 const base::FilePath& database_path, 137 const base::FilePath& database_path,
139 leveldb::Env* env_override, 138 leveldb::Env* env_override,
140 const CreateCallback& callback); 139 const CreateCallback& callback);
141 static SyncStatusCode CreateForTesting( 140 static SyncStatusCode CreateForTesting(
142 scoped_ptr<leveldb::DB> db, 141 scoped_ptr<LevelDBWrapper> db,
143 scoped_ptr<MetadataDatabase>* metadata_database_out); 142 scoped_ptr<MetadataDatabase>* metadata_database_out);
144 143
145 ~MetadataDatabase(); 144 ~MetadataDatabase();
146 145
147 static void ClearDatabase(scoped_ptr<MetadataDatabase> metadata_database); 146 static void ClearDatabase(scoped_ptr<MetadataDatabase> metadata_database);
148 147
149 int64 GetLargestFetchedChangeID() const; 148 int64 GetLargestFetchedChangeID() const;
150 int64 GetSyncRootTrackerID() const; 149 int64 GetSyncRootTrackerID() const;
151 bool HasSyncRoot() const; 150 bool HasSyncRoot() const;
152 151
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 base::SequencedTaskRunner* file_task_runner, 352 base::SequencedTaskRunner* file_task_runner,
354 const base::FilePath& database_path, 353 const base::FilePath& database_path,
355 leveldb::Env* env_override); 354 leveldb::Env* env_override);
356 static void CreateOnFileTaskRunner( 355 static void CreateOnFileTaskRunner(
357 scoped_ptr<CreateParam> create_param, 356 scoped_ptr<CreateParam> create_param,
358 const CreateCallback& callback); 357 const CreateCallback& callback);
359 SyncStatusCode InitializeOnFileTaskRunner(); 358 SyncStatusCode InitializeOnFileTaskRunner();
360 359
361 // Database manipulation methods. 360 // Database manipulation methods.
362 void RegisterTrackerAsAppRoot(const std::string& app_id, 361 void RegisterTrackerAsAppRoot(const std::string& app_id,
363 int64 tracker_id, 362 int64 tracker_id);
364 leveldb::WriteBatch* batch);
365 363
366 void CreateTrackerForParentAndFileID(const FileTracker& parent_tracker, 364 void CreateTrackerForParentAndFileID(const FileTracker& parent_tracker,
367 const std::string& file_id, 365 const std::string& file_id);
368 leveldb::WriteBatch* batch);
369 void CreateTrackerForParentAndFileMetadata(const FileTracker& parent_tracker, 366 void CreateTrackerForParentAndFileMetadata(const FileTracker& parent_tracker,
370 const FileMetadata& file_metadata, 367 const FileMetadata& file_metadata,
371 UpdateOption option, 368 UpdateOption option);
372 leveldb::WriteBatch* batch);
373 void CreateTrackerInternal(const FileTracker& parent_tracker, 369 void CreateTrackerInternal(const FileTracker& parent_tracker,
374 const std::string& file_id, 370 const std::string& file_id,
375 const FileDetails* details, 371 const FileDetails* details,
376 UpdateOption option, 372 UpdateOption option);
377 leveldb::WriteBatch* batch);
378 373
379 void MaybeAddTrackersForNewFile(const FileMetadata& file, 374 void MaybeAddTrackersForNewFile(const FileMetadata& file,
380 UpdateOption option, 375 UpdateOption option);
381 leveldb::WriteBatch* batch);
382 376
383 int64 IncrementTrackerID(leveldb::WriteBatch* batch); 377 int64 IncrementTrackerID();
384 378
385 bool CanActivateTracker(const FileTracker& tracker); 379 bool CanActivateTracker(const FileTracker& tracker);
386 bool ShouldKeepDirty(const FileTracker& tracker) const; 380 bool ShouldKeepDirty(const FileTracker& tracker) const;
387 381
388 bool HasDisabledAppRoot(const FileTracker& tracker) const; 382 bool HasDisabledAppRoot(const FileTracker& tracker) const;
389 bool HasActiveTrackerForFileID(const std::string& file_id) const; 383 bool HasActiveTrackerForFileID(const std::string& file_id) const;
390 bool HasActiveTrackerForPath(int64 parent_tracker, 384 bool HasActiveTrackerForPath(int64 parent_tracker,
391 const std::string& title) const; 385 const std::string& title) const;
392 386
393 void RemoveUnneededTrackersForMissingFile(const std::string& file_id, 387 void RemoveUnneededTrackersForMissingFile(const std::string& file_id);
394 leveldb::WriteBatch* batch);
395 void UpdateByFileMetadata(const tracked_objects::Location& from_where, 388 void UpdateByFileMetadata(const tracked_objects::Location& from_where,
396 scoped_ptr<FileMetadata> file, 389 scoped_ptr<FileMetadata> file,
397 UpdateOption option, 390 UpdateOption option);
398 leveldb::WriteBatch* batch);
399 391
400 void WriteToDatabase(scoped_ptr<leveldb::WriteBatch> batch, 392 void WriteToDatabase(const SyncStatusCallback& callback);
401 const SyncStatusCallback& callback);
402 393
403 bool HasNewerFileMetadata(const std::string& file_id, int64 change_id); 394 bool HasNewerFileMetadata(const std::string& file_id, int64 change_id);
404 395
405 scoped_ptr<base::ListValue> DumpTrackers(); 396 scoped_ptr<base::ListValue> DumpTrackers();
406 scoped_ptr<base::ListValue> DumpMetadata(); 397 scoped_ptr<base::ListValue> DumpMetadata();
407 398
408 void AttachSyncRoot(const google_apis::FileResource& sync_root_folder, 399 void AttachSyncRoot(const google_apis::FileResource& sync_root_folder);
409 leveldb::WriteBatch* batch); 400 void AttachInitialAppRoot(const google_apis::FileResource& app_root_folder);
410 void AttachInitialAppRoot(const google_apis::FileResource& app_root_folder,
411 leveldb::WriteBatch* batch);
412 401
413 void ForceActivateTrackerByPath(int64 parent_tracker_id, 402 void ForceActivateTrackerByPath(int64 parent_tracker_id,
414 const std::string& title, 403 const std::string& title,
415 const std::string& file_id, 404 const std::string& file_id);
416 leveldb::WriteBatch* batch);
417 405
418 void DetachFromSequence(); 406 void DetachFromSequence();
419 407
420 scoped_refptr<base::SequencedTaskRunner> worker_task_runner_; 408 scoped_refptr<base::SequencedTaskRunner> worker_task_runner_;
421 scoped_refptr<base::SequencedTaskRunner> file_task_runner_; 409 scoped_refptr<base::SequencedTaskRunner> file_task_runner_;
422 base::FilePath database_path_; 410 base::FilePath database_path_;
423 leveldb::Env* env_override_; 411 leveldb::Env* env_override_;
424 scoped_ptr<leveldb::DB> db_; 412 scoped_ptr<LevelDBWrapper> db_;
425 413
426 int64 largest_known_change_id_; 414 int64 largest_known_change_id_;
427 415
428 scoped_ptr<MetadataDatabaseIndexInterface> index_; 416 scoped_ptr<MetadataDatabaseIndexInterface> index_;
429 417
430 base::WeakPtrFactory<MetadataDatabase> weak_ptr_factory_; 418 base::WeakPtrFactory<MetadataDatabase> weak_ptr_factory_;
431 419
432 base::SequenceChecker worker_sequence_checker_; 420 base::SequenceChecker worker_sequence_checker_;
433 421
434 DISALLOW_COPY_AND_ASSIGN(MetadataDatabase); 422 DISALLOW_COPY_AND_ASSIGN(MetadataDatabase);
435 }; 423 };
436 424
437 } // namespace drive_backend 425 } // namespace drive_backend
438 } // namespace sync_file_system 426 } // namespace sync_file_system
439 427
440 #endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_METADATA_DATABASE_H_ 428 #endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_METADATA_DATABASE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698