| OLD | NEW |
| 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 #ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_METADATA_DATABASE_INDEX_H_ | 5 #ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_METADATA_DATABASE_INDEX_H_ |
| 6 #define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_METADATA_DATABASE_INDEX_H_ | 6 #define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_METADATA_DATABASE_INDEX_H_ |
| 7 | 7 |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 #include <stdint.h> | 9 #include <stdint.h> |
| 10 | 10 |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 51 ~DatabaseContents(); | 51 ~DatabaseContents(); |
| 52 ScopedVector<FileMetadata> file_metadata; | 52 ScopedVector<FileMetadata> file_metadata; |
| 53 ScopedVector<FileTracker> file_trackers; | 53 ScopedVector<FileTracker> file_trackers; |
| 54 }; | 54 }; |
| 55 | 55 |
| 56 // Maintains indexes of MetadataDatabase on memory. | 56 // Maintains indexes of MetadataDatabase on memory. |
| 57 class MetadataDatabaseIndex : public MetadataDatabaseIndexInterface { | 57 class MetadataDatabaseIndex : public MetadataDatabaseIndexInterface { |
| 58 public: | 58 public: |
| 59 ~MetadataDatabaseIndex() override; | 59 ~MetadataDatabaseIndex() override; |
| 60 | 60 |
| 61 static scoped_ptr<MetadataDatabaseIndex> Create(LevelDBWrapper* db); | 61 static std::unique_ptr<MetadataDatabaseIndex> Create(LevelDBWrapper* db); |
| 62 static scoped_ptr<MetadataDatabaseIndex> CreateForTesting( | 62 static std::unique_ptr<MetadataDatabaseIndex> CreateForTesting( |
| 63 DatabaseContents* contents, LevelDBWrapper* db); | 63 DatabaseContents* contents, |
| 64 LevelDBWrapper* db); |
| 64 | 65 |
| 65 // MetadataDatabaseIndexInterface overrides. | 66 // MetadataDatabaseIndexInterface overrides. |
| 66 void RemoveUnreachableItems() override; | 67 void RemoveUnreachableItems() override; |
| 67 bool GetFileMetadata(const std::string& file_id, | 68 bool GetFileMetadata(const std::string& file_id, |
| 68 FileMetadata* metadata) const override; | 69 FileMetadata* metadata) const override; |
| 69 bool GetFileTracker(int64_t tracker_id, FileTracker* tracker) const override; | 70 bool GetFileTracker(int64_t tracker_id, FileTracker* tracker) const override; |
| 70 void StoreFileMetadata(scoped_ptr<FileMetadata> metadata) override; | 71 void StoreFileMetadata(std::unique_ptr<FileMetadata> metadata) override; |
| 71 void StoreFileTracker(scoped_ptr<FileTracker> tracker) override; | 72 void StoreFileTracker(std::unique_ptr<FileTracker> tracker) override; |
| 72 void RemoveFileMetadata(const std::string& file_id) override; | 73 void RemoveFileMetadata(const std::string& file_id) override; |
| 73 void RemoveFileTracker(int64_t tracker_id) override; | 74 void RemoveFileTracker(int64_t tracker_id) override; |
| 74 TrackerIDSet GetFileTrackerIDsByFileID( | 75 TrackerIDSet GetFileTrackerIDsByFileID( |
| 75 const std::string& file_id) const override; | 76 const std::string& file_id) const override; |
| 76 int64_t GetAppRootTracker(const std::string& app_id) const override; | 77 int64_t GetAppRootTracker(const std::string& app_id) const override; |
| 77 TrackerIDSet GetFileTrackerIDsByParentAndTitle( | 78 TrackerIDSet GetFileTrackerIDsByParentAndTitle( |
| 78 int64_t parent_tracker_id, | 79 int64_t parent_tracker_id, |
| 79 const std::string& title) const override; | 80 const std::string& title) const override; |
| 80 std::vector<int64_t> GetFileTrackerIDsByParent( | 81 std::vector<int64_t> GetFileTrackerIDsByParent( |
| 81 int64_t parent_tracker_id) const override; | 82 int64_t parent_tracker_id) const override; |
| (...skipping 14 matching lines...) Expand all Loading... |
| 96 void SetNextTrackerID(int64_t next_tracker_id) const override; | 97 void SetNextTrackerID(int64_t next_tracker_id) const override; |
| 97 bool IsSyncRootRevalidated() const override; | 98 bool IsSyncRootRevalidated() const override; |
| 98 int64_t GetSyncRootTrackerID() const override; | 99 int64_t GetSyncRootTrackerID() const override; |
| 99 int64_t GetLargestChangeID() const override; | 100 int64_t GetLargestChangeID() const override; |
| 100 int64_t GetNextTrackerID() const override; | 101 int64_t GetNextTrackerID() const override; |
| 101 std::vector<std::string> GetRegisteredAppIDs() const override; | 102 std::vector<std::string> GetRegisteredAppIDs() const override; |
| 102 std::vector<int64_t> GetAllTrackerIDs() const override; | 103 std::vector<int64_t> GetAllTrackerIDs() const override; |
| 103 std::vector<std::string> GetAllMetadataIDs() const override; | 104 std::vector<std::string> GetAllMetadataIDs() const override; |
| 104 | 105 |
| 105 private: | 106 private: |
| 106 typedef base::ScopedPtrHashMap<std::string, scoped_ptr<FileMetadata>> | 107 typedef base::ScopedPtrHashMap<std::string, std::unique_ptr<FileMetadata>> |
| 107 MetadataByID; | 108 MetadataByID; |
| 108 typedef base::ScopedPtrHashMap<int64_t, scoped_ptr<FileTracker>> TrackerByID; | 109 typedef base::ScopedPtrHashMap<int64_t, std::unique_ptr<FileTracker>> |
| 110 TrackerByID; |
| 109 typedef base::hash_map<std::string, TrackerIDSet> TrackerIDsByFileID; | 111 typedef base::hash_map<std::string, TrackerIDSet> TrackerIDsByFileID; |
| 110 typedef base::hash_map<std::string, TrackerIDSet> TrackerIDsByTitle; | 112 typedef base::hash_map<std::string, TrackerIDSet> TrackerIDsByTitle; |
| 111 typedef std::map<int64_t, TrackerIDsByTitle> TrackerIDsByParentAndTitle; | 113 typedef std::map<int64_t, TrackerIDsByTitle> TrackerIDsByParentAndTitle; |
| 112 typedef base::hash_map<std::string, int64_t> TrackerIDByAppID; | 114 typedef base::hash_map<std::string, int64_t> TrackerIDByAppID; |
| 113 typedef base::hash_set<std::string> FileIDSet; | 115 typedef base::hash_set<std::string> FileIDSet; |
| 114 typedef base::hash_set<ParentIDAndTitle> PathSet; | 116 typedef base::hash_set<ParentIDAndTitle> PathSet; |
| 115 typedef std::set<int64_t> DirtyTrackers; | 117 typedef std::set<int64_t> DirtyTrackers; |
| 116 | 118 |
| 117 friend class MetadataDatabaseTest; | 119 friend class MetadataDatabaseTest; |
| 118 | 120 |
| 119 explicit MetadataDatabaseIndex(LevelDBWrapper* db); | 121 explicit MetadataDatabaseIndex(LevelDBWrapper* db); |
| 120 void Initialize(scoped_ptr<ServiceMetadata> service_metadata, | 122 void Initialize(std::unique_ptr<ServiceMetadata> service_metadata, |
| 121 DatabaseContents* contents); | 123 DatabaseContents* contents); |
| 122 | 124 |
| 123 // Maintains |app_root_by_app_id_|. | 125 // Maintains |app_root_by_app_id_|. |
| 124 void AddToAppIDIndex(const FileTracker& new_tracker); | 126 void AddToAppIDIndex(const FileTracker& new_tracker); |
| 125 void UpdateInAppIDIndex(const FileTracker& old_tracker, | 127 void UpdateInAppIDIndex(const FileTracker& old_tracker, |
| 126 const FileTracker& new_tracker); | 128 const FileTracker& new_tracker); |
| 127 void RemoveFromAppIDIndex(const FileTracker& tracker); | 129 void RemoveFromAppIDIndex(const FileTracker& tracker); |
| 128 | 130 |
| 129 // Maintains |trackers_by_file_id_| and |multi_tracker_file_ids_|. | 131 // Maintains |trackers_by_file_id_| and |multi_tracker_file_ids_|. |
| 130 void AddToFileIDIndexes(const FileTracker& new_tracker); | 132 void AddToFileIDIndexes(const FileTracker& new_tracker); |
| 131 void UpdateInFileIDIndexes(const FileTracker& old_tracker, | 133 void UpdateInFileIDIndexes(const FileTracker& old_tracker, |
| 132 const FileTracker& new_tracker); | 134 const FileTracker& new_tracker); |
| 133 void RemoveFromFileIDIndexes(const FileTracker& tracker); | 135 void RemoveFromFileIDIndexes(const FileTracker& tracker); |
| 134 | 136 |
| 135 // Maintains |trackers_by_parent_and_title_| and |multi_backing_file_paths_|. | 137 // Maintains |trackers_by_parent_and_title_| and |multi_backing_file_paths_|. |
| 136 void AddToPathIndexes(const FileTracker& new_tracker); | 138 void AddToPathIndexes(const FileTracker& new_tracker); |
| 137 void UpdateInPathIndexes(const FileTracker& old_tracker, | 139 void UpdateInPathIndexes(const FileTracker& old_tracker, |
| 138 const FileTracker& new_tracker1); | 140 const FileTracker& new_tracker1); |
| 139 void RemoveFromPathIndexes(const FileTracker& tracker); | 141 void RemoveFromPathIndexes(const FileTracker& tracker); |
| 140 | 142 |
| 141 // Maintains |dirty_trackers_| and |demoted_dirty_trackers_|. | 143 // Maintains |dirty_trackers_| and |demoted_dirty_trackers_|. |
| 142 void AddToDirtyTrackerIndexes(const FileTracker& new_tracker); | 144 void AddToDirtyTrackerIndexes(const FileTracker& new_tracker); |
| 143 void UpdateInDirtyTrackerIndexes(const FileTracker& old_tracker, | 145 void UpdateInDirtyTrackerIndexes(const FileTracker& old_tracker, |
| 144 const FileTracker& new_tracker); | 146 const FileTracker& new_tracker); |
| 145 void RemoveFromDirtyTrackerIndexes(const FileTracker& tracker); | 147 void RemoveFromDirtyTrackerIndexes(const FileTracker& tracker); |
| 146 | 148 |
| 147 scoped_ptr<ServiceMetadata> service_metadata_; | 149 std::unique_ptr<ServiceMetadata> service_metadata_; |
| 148 LevelDBWrapper* db_; // Not owned | 150 LevelDBWrapper* db_; // Not owned |
| 149 | 151 |
| 150 MetadataByID metadata_by_id_; | 152 MetadataByID metadata_by_id_; |
| 151 TrackerByID tracker_by_id_; | 153 TrackerByID tracker_by_id_; |
| 152 | 154 |
| 153 TrackerIDByAppID app_root_by_app_id_; | 155 TrackerIDByAppID app_root_by_app_id_; |
| 154 | 156 |
| 155 TrackerIDsByFileID trackers_by_file_id_; | 157 TrackerIDsByFileID trackers_by_file_id_; |
| 156 FileIDSet multi_tracker_file_ids_; | 158 FileIDSet multi_tracker_file_ids_; |
| 157 | 159 |
| 158 TrackerIDsByParentAndTitle trackers_by_parent_and_title_; | 160 TrackerIDsByParentAndTitle trackers_by_parent_and_title_; |
| 159 PathSet multi_backing_file_paths_; | 161 PathSet multi_backing_file_paths_; |
| 160 | 162 |
| 161 DirtyTrackers dirty_trackers_; | 163 DirtyTrackers dirty_trackers_; |
| 162 DirtyTrackers demoted_dirty_trackers_; | 164 DirtyTrackers demoted_dirty_trackers_; |
| 163 | 165 |
| 164 DISALLOW_COPY_AND_ASSIGN(MetadataDatabaseIndex); | 166 DISALLOW_COPY_AND_ASSIGN(MetadataDatabaseIndex); |
| 165 }; | 167 }; |
| 166 | 168 |
| 167 } // namespace drive_backend | 169 } // namespace drive_backend |
| 168 } // namespace sync_file_system | 170 } // namespace sync_file_system |
| 169 | 171 |
| 170 #endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_METADATA_DATABASE_INDEX
_H_ | 172 #endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_METADATA_DATABASE_INDEX
_H_ |
| OLD | NEW |