Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 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 | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_METADATA_DATABASE_INDEX_IN TERFACE_H_ | |
| 6 #define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_METADATA_DATABASE_INDEX_IN TERFACE_H_ | |
| 7 | |
| 8 #include <string> | |
| 9 #include <vector> | |
| 10 | |
| 11 #include "base/memory/scoped_ptr.h" | |
| 12 | |
| 13 namespace sync_file_system { | |
| 14 namespace drive_backend { | |
| 15 | |
| 16 struct ParentIDAndTitle { | |
| 17 int64 parent_id; | |
| 18 std::string title; | |
| 19 | |
| 20 ParentIDAndTitle(); | |
| 21 ParentIDAndTitle(int64 parent_id, const std::string& title); | |
| 22 }; | |
| 23 | |
| 24 bool operator==(const ParentIDAndTitle& left, const ParentIDAndTitle& right); | |
| 25 bool operator<(const ParentIDAndTitle& left, const ParentIDAndTitle& right); | |
| 26 | |
| 27 } // namespace drive_backend | |
| 28 } // namespace sync_file_system | |
| 29 | |
| 30 namespace BASE_HASH_NAMESPACE { | |
| 31 | |
| 32 #if defined(COMPILER_GCC) | |
| 33 template<> struct hash<sync_file_system::drive_backend::ParentIDAndTitle> { | |
| 34 std::size_t operator()( | |
| 35 const sync_file_system::drive_backend::ParentIDAndTitle& v) const { | |
| 36 return base::HashInts64(v.parent_id, hash<std::string>()(v.title)); | |
| 37 } | |
| 38 }; | |
| 39 #elif defined(COMPILER_MSVC) | |
| 40 inline size_t hash_value( | |
| 41 const sync_file_system::drive_backend::ParentIDAndTitle& v) { | |
| 42 return base::HashInts64(v.parent_id, hash_value(v.title)); | |
| 43 } | |
| 44 #endif // COMPILER | |
|
tzik
2014/06/20 03:57:47
Can we move this block to the original file? I thi
peria
2014/06/20 04:44:22
Done.
| |
| 45 | |
| 46 } // namespace BASE_HASH_NAMESPACE | |
| 47 | |
| 48 namespace sync_file_system { | |
| 49 namespace drive_backend { | |
| 50 | |
| 51 class FileMetadata; | |
| 52 class FileTracker; | |
| 53 | |
| 54 // Maintains indexes of MetadataDatabase. This class doesn't modify database | |
| 55 // entries on memory nor on disk. | |
|
tzik
2014/06/20 03:57:47
Could you update this comment? I think this is no
peria
2014/06/20 04:44:23
Done.
| |
| 56 class MetadataDatabaseIndexInterface { | |
| 57 public: | |
| 58 MetadataDatabaseIndexInterface() {} | |
| 59 virtual ~MetadataDatabaseIndexInterface() {} | |
| 60 | |
| 61 // Returns FileMetadata identified by |file_id| if exists, otherwise returns | |
| 62 // NULL. | |
| 63 virtual const FileMetadata* GetFileMetadata( | |
| 64 const std::string& file_id) const = 0; | |
| 65 | |
| 66 // Returns FileTracker identified by |tracker_id| if exists, otherwise returns | |
| 67 // NULL. | |
| 68 virtual const FileTracker* GetFileTracker(int64 tracker_id) const = 0; | |
| 69 | |
| 70 // Stores |metadata| and updates indexes. | |
| 71 // This overwrites existing FileMetadata for the same |file_id|. | |
| 72 virtual void StoreFileMetadata(scoped_ptr<FileMetadata> metadata) = 0; | |
| 73 | |
| 74 // Stores |tracker| and updates indexes. | |
| 75 // This overwrites existing FileTracker for the same |tracker_id|. | |
| 76 virtual void StoreFileTracker(scoped_ptr<FileTracker> tracker) = 0; | |
| 77 | |
| 78 // Removes FileMetadata identified by |file_id| from indexes. | |
| 79 virtual void RemoveFileMetadata(const std::string& file_id) = 0; | |
| 80 | |
| 81 // Removes FileTracker identified by |tracker_id| from indexes. | |
| 82 virtual void RemoveFileTracker(int64 tracker_id) = 0; | |
| 83 | |
| 84 // Returns a set of FileTracker that have |file_id| as its own. | |
| 85 virtual TrackerIDSet GetFileTrackerIDsByFileID( | |
| 86 const std::string& file_id) const = 0; | |
| 87 | |
| 88 // Returns an app-root tracker identified by |app_id|. Returns 0 if not | |
| 89 // found. | |
| 90 virtual int64 GetAppRootTracker(const std::string& app_id) const = 0; | |
| 91 | |
| 92 // Returns a set of FileTracker that have |parent_tracker_id| and |title|. | |
| 93 virtual TrackerIDSet GetFileTrackerIDsByParentAndTitle( | |
| 94 int64 parent_tracker_id, | |
| 95 const std::string& title) const = 0; | |
| 96 | |
| 97 virtual std::vector<int64> GetFileTrackerIDsByParent( | |
| 98 int64 parent_tracker_id) const = 0; | |
| 99 | |
| 100 // Returns the |file_id| of a file that has multiple trackers. | |
| 101 virtual std::string PickMultiTrackerFileID() const = 0; | |
| 102 | |
| 103 // Returns a pair of |parent_tracker_id| and |title| that has multiple file | |
| 104 // at the path. | |
| 105 virtual ParentIDAndTitle PickMultiBackingFilePath() const = 0; | |
| 106 | |
| 107 // Returns a FileTracker whose |dirty| is set and which isn't demoted. | |
| 108 // Returns 0 if not found. | |
| 109 virtual int64 PickDirtyTracker() const = 0; | |
| 110 | |
| 111 // Demotes a dirty tracker. | |
| 112 virtual void DemoteDirtyTracker(int64 tracker_id) = 0; | |
| 113 | |
| 114 virtual bool HasDemotedDirtyTracker() const = 0; | |
| 115 | |
| 116 // Promotes all demoted dirty trackers to normal dirty trackers. | |
| 117 virtual void PromoteDemotedDirtyTrackers() = 0; | |
| 118 | |
| 119 virtual size_t CountDirtyTracker() const = 0; | |
| 120 virtual size_t CountFileMetadata() const = 0; | |
| 121 virtual size_t CountFileTracker() const = 0; | |
| 122 | |
| 123 virtual std::vector<std::string> GetRegisteredAppIDs() const = 0; | |
| 124 virtual std::vector<int64> GetAllTrackerIDs() const = 0; | |
| 125 virtual std::vector<std::string> GetAllMetadataIDs() const = 0; | |
| 126 | |
| 127 private: | |
| 128 DISALLOW_COPY_AND_ASSIGN(MetadataDatabaseIndexInterface); | |
| 129 }; | |
| 130 | |
| 131 } // namespace drive_backend | |
| 132 } // namespace sync_file_system | |
| 133 | |
| 134 #endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_BACKEND_METADATA_DATABASE_INDEX _INTERFACE_H_ | |
| OLD | NEW |