Chromium Code Reviews| Index: chrome/browser/chromeos/drive/resource_metadata_storage.h |
| diff --git a/chrome/browser/chromeos/drive/resource_metadata_storage.h b/chrome/browser/chromeos/drive/resource_metadata_storage.h |
| index 1be55d96ff8e8bd8d025ab3414f1e8ea08be89f4..ae7237e20a9ae474f4689879ddadf20814729f00 100644 |
| --- a/chrome/browser/chromeos/drive/resource_metadata_storage.h |
| +++ b/chrome/browser/chromeos/drive/resource_metadata_storage.h |
| @@ -9,12 +9,13 @@ |
| #include <vector> |
| #include "base/basictypes.h" |
| -#include "base/callback_forward.h" |
| #include "base/files/file_path.h" |
| #include "base/memory/scoped_ptr.h" |
| +#include "chrome/browser/chromeos/drive/drive.pb.h" |
| namespace leveldb { |
| class DB; |
| +class Iterator; |
| } |
| namespace drive { |
| @@ -22,8 +23,6 @@ namespace drive { |
| class ResourceEntry; |
| class ResourceMetadataHeader; |
| -typedef base::Callback<void(const ResourceEntry& entry)> IterateCallback; |
| - |
| // Storage for ResourceMetadata which is responsible to manage entry info |
| // and child-parent relationships between entries. |
| class ResourceMetadataStorage { |
| @@ -32,6 +31,30 @@ class ResourceMetadataStorage { |
| // format. |
| static const int kDBVersion = 5; |
| + class Iterator { |
| + public: |
| + explicit Iterator(scoped_ptr<leveldb::Iterator> it); |
| + ~Iterator(); |
| + |
| + // Returns true if this object is pointing a valid entry. |
| + bool IsValid() const; |
| + |
| + // Returns the entry currently pointed by this object. |
| + const ResourceEntry& Get() const; |
| + |
| + // Moves to the next entry. |
| + void MoveForward(); |
|
hidehiko
2013/05/09 11:31:24
How about name the methods Next()/Done() or Advanc
hashimoto
2013/05/09 11:48:46
Renamed to Advance()/IsAtEnd() to be consistent wi
|
| + |
| + // Returns true if this object has encountered any error. |
| + bool HasError() const; |
| + |
| + private: |
| + ResourceEntry entry_; |
| + scoped_ptr<leveldb::Iterator> it_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(Iterator); |
| + }; |
| + |
| explicit ResourceMetadataStorage(const base::FilePath& directory_path); |
| virtual ~ResourceMetadataStorage(); |
| @@ -53,8 +76,8 @@ class ResourceMetadataStorage { |
| // Removes an entry from this storage. |
| bool RemoveEntry(const std::string& resource_id); |
| - // Iterates over entries stored in this storage. |
| - void Iterate(const IterateCallback& callback); |
| + // Returns an object to iterate over entries stored in this storage. |
| + scoped_ptr<Iterator> GetIterator(); |
| // Returns resource ID of the parent's child. |
| std::string GetChild(const std::string& parent_resource_id, |