 Chromium Code Reviews
 Chromium Code Reviews Issue 14858016:
  drive: Stop using callback for ResourceMetadataStorage::Iterate  (Closed) 
  Base URL: svn://svn.chromium.org/chrome/trunk/src
    
  
    Issue 14858016:
  drive: Stop using callback for ResourceMetadataStorage::Iterate  (Closed) 
  Base URL: svn://svn.chromium.org/chrome/trunk/src| 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, |