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

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 on cl/437943002 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 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 130
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 const base::FilePath& database_path, 136 const base::FilePath& database_path,
138 leveldb::Env* env_override, 137 leveldb::Env* env_override,
139 const CreateCallback& callback); 138 const CreateCallback& callback);
140 static SyncStatusCode CreateForTesting( 139 static SyncStatusCode CreateForTesting(
141 scoped_ptr<leveldb::DB> db, 140 scoped_ptr<LevelDBWrapper> db,
142 scoped_ptr<MetadataDatabase>* metadata_database_out); 141 scoped_ptr<MetadataDatabase>* metadata_database_out);
143 142
144 ~MetadataDatabase(); 143 ~MetadataDatabase();
145 144
146 static void ClearDatabase(scoped_ptr<MetadataDatabase> metadata_database); 145 static void ClearDatabase(scoped_ptr<MetadataDatabase> metadata_database);
147 146
148 int64 GetLargestFetchedChangeID() const; 147 int64 GetLargestFetchedChangeID() const;
149 int64 GetSyncRootTrackerID() const; 148 int64 GetSyncRootTrackerID() const;
150 bool HasSyncRoot() const; 149 bool HasSyncRoot() const;
151 150
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 MetadataDatabase(base::SequencedTaskRunner* worker_task_runner, 350 MetadataDatabase(base::SequencedTaskRunner* worker_task_runner,
352 const base::FilePath& database_path, 351 const base::FilePath& database_path,
353 leveldb::Env* env_override); 352 leveldb::Env* env_override);
354 static void CreateOnWorkerTaskRunner( 353 static void CreateOnWorkerTaskRunner(
355 scoped_ptr<CreateParam> create_param, 354 scoped_ptr<CreateParam> create_param,
356 const CreateCallback& callback); 355 const CreateCallback& callback);
357 SyncStatusCode Initialize(); 356 SyncStatusCode Initialize();
358 357
359 // Database manipulation methods. 358 // Database manipulation methods.
360 void RegisterTrackerAsAppRoot(const std::string& app_id, 359 void RegisterTrackerAsAppRoot(const std::string& app_id,
361 int64 tracker_id, 360 int64 tracker_id);
362 leveldb::WriteBatch* batch);
363 361
364 void CreateTrackerForParentAndFileID(const FileTracker& parent_tracker, 362 void CreateTrackerForParentAndFileID(const FileTracker& parent_tracker,
365 const std::string& file_id, 363 const std::string& file_id);
366 leveldb::WriteBatch* batch);
367 void CreateTrackerForParentAndFileMetadata(const FileTracker& parent_tracker, 364 void CreateTrackerForParentAndFileMetadata(const FileTracker& parent_tracker,
368 const FileMetadata& file_metadata, 365 const FileMetadata& file_metadata,
369 UpdateOption option, 366 UpdateOption option);
370 leveldb::WriteBatch* batch);
371 void CreateTrackerInternal(const FileTracker& parent_tracker, 367 void CreateTrackerInternal(const FileTracker& parent_tracker,
372 const std::string& file_id, 368 const std::string& file_id,
373 const FileDetails* details, 369 const FileDetails* details,
374 UpdateOption option, 370 UpdateOption option);
375 leveldb::WriteBatch* batch);
376 371
377 void MaybeAddTrackersForNewFile(const FileMetadata& file, 372 void MaybeAddTrackersForNewFile(const FileMetadata& file,
378 UpdateOption option, 373 UpdateOption option);
379 leveldb::WriteBatch* batch);
380 374
381 int64 IncrementTrackerID(leveldb::WriteBatch* batch); 375 int64 IncrementTrackerID();
382 376
383 bool CanActivateTracker(const FileTracker& tracker); 377 bool CanActivateTracker(const FileTracker& tracker);
384 bool ShouldKeepDirty(const FileTracker& tracker) const; 378 bool ShouldKeepDirty(const FileTracker& tracker) const;
385 379
386 bool HasDisabledAppRoot(const FileTracker& tracker) const; 380 bool HasDisabledAppRoot(const FileTracker& tracker) const;
387 bool HasActiveTrackerForFileID(const std::string& file_id) const; 381 bool HasActiveTrackerForFileID(const std::string& file_id) const;
388 bool HasActiveTrackerForPath(int64 parent_tracker, 382 bool HasActiveTrackerForPath(int64 parent_tracker,
389 const std::string& title) const; 383 const std::string& title) const;
390 384
391 void RemoveUnneededTrackersForMissingFile(const std::string& file_id, 385 void RemoveUnneededTrackersForMissingFile(const std::string& file_id);
392 leveldb::WriteBatch* batch);
393 void UpdateByFileMetadata(const tracked_objects::Location& from_where, 386 void UpdateByFileMetadata(const tracked_objects::Location& from_where,
394 scoped_ptr<FileMetadata> file, 387 scoped_ptr<FileMetadata> file,
395 UpdateOption option, 388 UpdateOption option);
396 leveldb::WriteBatch* batch);
397 389
398 void WriteToDatabase(scoped_ptr<leveldb::WriteBatch> batch, 390 void WriteToDatabase(const SyncStatusCallback& callback);
399 const SyncStatusCallback& callback);
400 391
401 bool HasNewerFileMetadata(const std::string& file_id, int64 change_id); 392 bool HasNewerFileMetadata(const std::string& file_id, int64 change_id);
402 393
403 scoped_ptr<base::ListValue> DumpTrackers(); 394 scoped_ptr<base::ListValue> DumpTrackers();
404 scoped_ptr<base::ListValue> DumpMetadata(); 395 scoped_ptr<base::ListValue> DumpMetadata();
405 396
406 void AttachSyncRoot(const google_apis::FileResource& sync_root_folder, 397 void AttachSyncRoot(const google_apis::FileResource& sync_root_folder);
407 leveldb::WriteBatch* batch); 398 void AttachInitialAppRoot(const google_apis::FileResource& app_root_folder);
408 void AttachInitialAppRoot(const google_apis::FileResource& app_root_folder,
409 leveldb::WriteBatch* batch);
410 399
411 void ForceActivateTrackerByPath(int64 parent_tracker_id, 400 void ForceActivateTrackerByPath(int64 parent_tracker_id,
412 const std::string& title, 401 const std::string& title,
413 const std::string& file_id, 402 const std::string& file_id);
414 leveldb::WriteBatch* batch);
415 403
416 void DetachFromSequence(); 404 void DetachFromSequence();
417 405
418 scoped_refptr<base::SequencedTaskRunner> worker_task_runner_; 406 scoped_refptr<base::SequencedTaskRunner> worker_task_runner_;
419 base::FilePath database_path_; 407 base::FilePath database_path_;
420 leveldb::Env* env_override_; 408 leveldb::Env* env_override_;
421 scoped_ptr<leveldb::DB> db_; 409 scoped_ptr<LevelDBWrapper> db_;
422 410
423 int64 largest_known_change_id_; 411 int64 largest_known_change_id_;
424 412
425 scoped_ptr<MetadataDatabaseIndexInterface> index_; 413 scoped_ptr<MetadataDatabaseIndexInterface> index_;
426 414
427 base::WeakPtrFactory<MetadataDatabase> weak_ptr_factory_; 415 base::WeakPtrFactory<MetadataDatabase> weak_ptr_factory_;
428 416
429 base::SequenceChecker worker_sequence_checker_; 417 base::SequenceChecker worker_sequence_checker_;
430 418
431 DISALLOW_COPY_AND_ASSIGN(MetadataDatabase); 419 DISALLOW_COPY_AND_ASSIGN(MetadataDatabase);
432 }; 420 };
433 421
434 } // namespace drive_backend 422 } // namespace drive_backend
435 } // namespace sync_file_system 423 } // namespace sync_file_system
436 424
437 #endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_METADATA_DATABASE_H_ 425 #endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_METADATA_DATABASE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698