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

Unified Diff: chrome/browser/chromeos/drive/resource_metadata_storage.h

Issue 14858016: drive: Stop using callback for ResourceMetadataStorage::Iterate (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 7 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 side-by-side diff with in-line comments
Download patch
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,
« no previous file with comments | « chrome/browser/chromeos/drive/resource_metadata.cc ('k') | chrome/browser/chromeos/drive/resource_metadata_storage.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698