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

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

Powered by Google App Engine
This is Rietveld 408576698