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

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

Issue 388913005: [SyncFS] Migrate ServiceMetadata from MDDB to MDDBIndex. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Work for nits Created 6 years, 5 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 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
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
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_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698