| 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 <map> | 8 #include <map> |
| 9 #include <set> | 9 #include <set> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 58 ScopedVector<FileMetadata> file_metadata; | 58 ScopedVector<FileMetadata> file_metadata; |
| 59 ScopedVector<FileTracker> file_trackers; | 59 ScopedVector<FileTracker> file_trackers; |
| 60 }; | 60 }; |
| 61 | 61 |
| 62 // Maintains indexes of MetadataDatabase on memory. | 62 // Maintains indexes of MetadataDatabase on memory. |
| 63 class MetadataDatabaseIndex : public MetadataDatabaseIndexInterface { | 63 class MetadataDatabaseIndex : public MetadataDatabaseIndexInterface { |
| 64 public: | 64 public: |
| 65 virtual ~MetadataDatabaseIndex(); | 65 virtual ~MetadataDatabaseIndex(); |
| 66 | 66 |
| 67 static scoped_ptr<MetadataDatabaseIndex> Create( | 67 static scoped_ptr<MetadataDatabaseIndex> Create( |
| 68 leveldb::DB* db, | 68 leveldb::DB* db, leveldb::WriteBatch* batch); |
| 69 int64 sync_root_tracker_id, | |
| 70 leveldb::WriteBatch* batch); | |
| 71 static scoped_ptr<MetadataDatabaseIndex> CreateForTesting( | 69 static scoped_ptr<MetadataDatabaseIndex> CreateForTesting( |
| 72 DatabaseContents* contents); | 70 DatabaseContents* contents); |
| 73 | 71 |
| 74 // MetadataDatabaseIndexInterface overrides. | 72 // MetadataDatabaseIndexInterface overrides. |
| 75 virtual bool GetFileMetadata( | 73 virtual bool GetFileMetadata( |
| 76 const std::string& file_id, FileMetadata* metadata) const OVERRIDE; | 74 const std::string& file_id, FileMetadata* metadata) const OVERRIDE; |
| 77 virtual bool GetFileTracker( | 75 virtual bool GetFileTracker( |
| 78 int64 tracker_id, FileTracker* tracker) const OVERRIDE; | 76 int64 tracker_id, FileTracker* tracker) const OVERRIDE; |
| 79 virtual void StoreFileMetadata( | 77 virtual void StoreFileMetadata( |
| 80 scoped_ptr<FileMetadata> metadata, leveldb::WriteBatch* batch) OVERRIDE; | 78 scoped_ptr<FileMetadata> metadata, leveldb::WriteBatch* batch) OVERRIDE; |
| (...skipping 14 matching lines...) Expand all Loading... |
| 95 virtual std::string PickMultiTrackerFileID() const OVERRIDE; | 93 virtual std::string PickMultiTrackerFileID() const OVERRIDE; |
| 96 virtual ParentIDAndTitle PickMultiBackingFilePath() const OVERRIDE; | 94 virtual ParentIDAndTitle PickMultiBackingFilePath() const OVERRIDE; |
| 97 virtual int64 PickDirtyTracker() const OVERRIDE; | 95 virtual int64 PickDirtyTracker() const OVERRIDE; |
| 98 virtual void DemoteDirtyTracker( | 96 virtual void DemoteDirtyTracker( |
| 99 int64 tracker_id, leveldb::WriteBatch* batch) OVERRIDE; | 97 int64 tracker_id, leveldb::WriteBatch* batch) OVERRIDE; |
| 100 virtual bool HasDemotedDirtyTracker() const OVERRIDE; | 98 virtual bool HasDemotedDirtyTracker() const OVERRIDE; |
| 101 virtual void PromoteDemotedDirtyTrackers(leveldb::WriteBatch* batch) OVERRIDE; | 99 virtual void PromoteDemotedDirtyTrackers(leveldb::WriteBatch* batch) OVERRIDE; |
| 102 virtual size_t CountDirtyTracker() const OVERRIDE; | 100 virtual size_t CountDirtyTracker() const OVERRIDE; |
| 103 virtual size_t CountFileMetadata() const OVERRIDE; | 101 virtual size_t CountFileMetadata() const OVERRIDE; |
| 104 virtual size_t CountFileTracker() const OVERRIDE; | 102 virtual size_t CountFileTracker() const OVERRIDE; |
| 103 virtual void SetSyncRootTrackerID(int64 sync_root_id, |
| 104 leveldb::WriteBatch* batch) const OVERRIDE; |
| 105 virtual void SetLargestChangeID(int64 largest_change_id, |
| 106 leveldb::WriteBatch* batch) const OVERRIDE; |
| 107 virtual void SetNextTrackerID(int64 next_tracker_id, |
| 108 leveldb::WriteBatch* batch) const OVERRIDE; |
| 109 virtual int64 GetSyncRootTrackerID() const OVERRIDE; |
| 110 virtual int64 GetLargestChangeID() const OVERRIDE; |
| 111 virtual int64 GetNextTrackerID() const OVERRIDE; |
| 105 virtual std::vector<std::string> GetRegisteredAppIDs() const OVERRIDE; | 112 virtual std::vector<std::string> GetRegisteredAppIDs() const OVERRIDE; |
| 106 virtual std::vector<int64> GetAllTrackerIDs() const OVERRIDE; | 113 virtual std::vector<int64> GetAllTrackerIDs() const OVERRIDE; |
| 107 virtual std::vector<std::string> GetAllMetadataIDs() const OVERRIDE; | 114 virtual std::vector<std::string> GetAllMetadataIDs() const OVERRIDE; |
| 108 | 115 |
| 109 private: | 116 private: |
| 110 typedef base::ScopedPtrHashMap<std::string, FileMetadata> MetadataByID; | 117 typedef base::ScopedPtrHashMap<std::string, FileMetadata> MetadataByID; |
| 111 typedef base::ScopedPtrHashMap<int64, FileTracker> TrackerByID; | 118 typedef base::ScopedPtrHashMap<int64, FileTracker> TrackerByID; |
| 112 typedef base::hash_map<std::string, TrackerIDSet> TrackerIDsByFileID; | 119 typedef base::hash_map<std::string, TrackerIDSet> TrackerIDsByFileID; |
| 113 typedef base::hash_map<std::string, TrackerIDSet> TrackerIDsByTitle; | 120 typedef base::hash_map<std::string, TrackerIDSet> TrackerIDsByTitle; |
| 114 typedef std::map<int64, TrackerIDsByTitle> TrackerIDsByParentAndTitle; | 121 typedef std::map<int64, TrackerIDsByTitle> TrackerIDsByParentAndTitle; |
| 115 typedef base::hash_map<std::string, int64> TrackerIDByAppID; | 122 typedef base::hash_map<std::string, int64> TrackerIDByAppID; |
| 116 typedef base::hash_set<std::string> FileIDSet; | 123 typedef base::hash_set<std::string> FileIDSet; |
| 117 typedef base::hash_set<ParentIDAndTitle> PathSet; | 124 typedef base::hash_set<ParentIDAndTitle> PathSet; |
| 118 typedef std::set<int64> DirtyTrackers; | 125 typedef std::set<int64> DirtyTrackers; |
| 119 | 126 |
| 120 friend class MetadataDatabaseTest; | 127 friend class MetadataDatabaseTest; |
| 121 | 128 |
| 122 MetadataDatabaseIndex(); | 129 MetadataDatabaseIndex(); |
| 123 void Initialize(DatabaseContents* contents); | 130 void Initialize(scoped_ptr<ServiceMetadata> service_metadata, |
| 131 DatabaseContents* contents); |
| 124 | 132 |
| 125 // Maintains |app_root_by_app_id_|. | 133 // Maintains |app_root_by_app_id_|. |
| 126 void AddToAppIDIndex(const FileTracker& new_tracker); | 134 void AddToAppIDIndex(const FileTracker& new_tracker); |
| 127 void UpdateInAppIDIndex(const FileTracker& old_tracker, | 135 void UpdateInAppIDIndex(const FileTracker& old_tracker, |
| 128 const FileTracker& new_tracker); | 136 const FileTracker& new_tracker); |
| 129 void RemoveFromAppIDIndex(const FileTracker& tracker); | 137 void RemoveFromAppIDIndex(const FileTracker& tracker); |
| 130 | 138 |
| 131 // Maintains |trackers_by_file_id_| and |multi_tracker_file_ids_|. | 139 // Maintains |trackers_by_file_id_| and |multi_tracker_file_ids_|. |
| 132 void AddToFileIDIndexes(const FileTracker& new_tracker); | 140 void AddToFileIDIndexes(const FileTracker& new_tracker); |
| 133 void UpdateInFileIDIndexes(const FileTracker& old_tracker, | 141 void UpdateInFileIDIndexes(const FileTracker& old_tracker, |
| 134 const FileTracker& new_tracker); | 142 const FileTracker& new_tracker); |
| 135 void RemoveFromFileIDIndexes(const FileTracker& tracker); | 143 void RemoveFromFileIDIndexes(const FileTracker& tracker); |
| 136 | 144 |
| 137 // Maintains |trackers_by_parent_and_title_| and |multi_backing_file_paths_|. | 145 // Maintains |trackers_by_parent_and_title_| and |multi_backing_file_paths_|. |
| 138 void AddToPathIndexes(const FileTracker& new_tracker); | 146 void AddToPathIndexes(const FileTracker& new_tracker); |
| 139 void UpdateInPathIndexes(const FileTracker& old_tracker, | 147 void UpdateInPathIndexes(const FileTracker& old_tracker, |
| 140 const FileTracker& new_tracker1); | 148 const FileTracker& new_tracker1); |
| 141 void RemoveFromPathIndexes(const FileTracker& tracker); | 149 void RemoveFromPathIndexes(const FileTracker& tracker); |
| 142 | 150 |
| 143 // Maintains |dirty_trackers_| and |demoted_dirty_trackers_|. | 151 // Maintains |dirty_trackers_| and |demoted_dirty_trackers_|. |
| 144 void AddToDirtyTrackerIndexes(const FileTracker& new_tracker); | 152 void AddToDirtyTrackerIndexes(const FileTracker& new_tracker); |
| 145 void UpdateInDirtyTrackerIndexes(const FileTracker& old_tracker, | 153 void UpdateInDirtyTrackerIndexes(const FileTracker& old_tracker, |
| 146 const FileTracker& new_tracker); | 154 const FileTracker& new_tracker); |
| 147 void RemoveFromDirtyTrackerIndexes(const FileTracker& tracker); | 155 void RemoveFromDirtyTrackerIndexes(const FileTracker& tracker); |
| 148 | 156 |
| 157 scoped_ptr<ServiceMetadata> service_metadata_; |
| 158 |
| 149 MetadataByID metadata_by_id_; | 159 MetadataByID metadata_by_id_; |
| 150 TrackerByID tracker_by_id_; | 160 TrackerByID tracker_by_id_; |
| 151 | 161 |
| 152 TrackerIDByAppID app_root_by_app_id_; | 162 TrackerIDByAppID app_root_by_app_id_; |
| 153 | 163 |
| 154 TrackerIDsByFileID trackers_by_file_id_; | 164 TrackerIDsByFileID trackers_by_file_id_; |
| 155 FileIDSet multi_tracker_file_ids_; | 165 FileIDSet multi_tracker_file_ids_; |
| 156 | 166 |
| 157 TrackerIDsByParentAndTitle trackers_by_parent_and_title_; | 167 TrackerIDsByParentAndTitle trackers_by_parent_and_title_; |
| 158 PathSet multi_backing_file_paths_; | 168 PathSet multi_backing_file_paths_; |
| 159 | 169 |
| 160 DirtyTrackers dirty_trackers_; | 170 DirtyTrackers dirty_trackers_; |
| 161 DirtyTrackers demoted_dirty_trackers_; | 171 DirtyTrackers demoted_dirty_trackers_; |
| 162 | 172 |
| 163 DISALLOW_COPY_AND_ASSIGN(MetadataDatabaseIndex); | 173 DISALLOW_COPY_AND_ASSIGN(MetadataDatabaseIndex); |
| 164 }; | 174 }; |
| 165 | 175 |
| 166 } // namespace drive_backend | 176 } // namespace drive_backend |
| 167 } // namespace sync_file_system | 177 } // namespace sync_file_system |
| 168 | 178 |
| 169 #endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_METADATA_DATABASE_INDEX
_H_ | 179 #endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_METADATA_DATABASE_INDEX
_H_ |
| OLD | NEW |