aboutsummaryrefslogtreecommitdiffstats
path: root/storage/filesystem/object.go
diff options
context:
space:
mode:
authorMiguel Molina <miguel@erizocosmi.co>2018-08-09 12:16:57 +0200
committerMiguel Molina <miguel@erizocosmi.co>2018-08-09 12:16:57 +0200
commit34cc506735ee0cd29362da51592b49a217df8159 (patch)
treef81df515e1471ddea1ed0f35e9ac3983ad5460c2 /storage/filesystem/object.go
parent71a3c9161d4d8d2baf16440a86a02e8f5678aef2 (diff)
downloadgo-git-34cc506735ee0cd29362da51592b49a217df8159.tar.gz
storage: filesystem, benchmark PackfileIter
Signed-off-by: Miguel Molina <miguel@erizocosmi.co>
Diffstat (limited to 'storage/filesystem/object.go')
-rw-r--r--storage/filesystem/object.go30
1 files changed, 26 insertions, 4 deletions
diff --git a/storage/filesystem/object.go b/storage/filesystem/object.go
index 2032eac..4757938 100644
--- a/storage/filesystem/object.go
+++ b/storage/filesystem/object.go
@@ -509,9 +509,20 @@ func (iter *packfileIter) Next() (plumbing.EncodedObject, error) {
}
}
-// ForEach is never called since is used inside of a MultiObjectIterator
func (iter *packfileIter) ForEach(cb func(plumbing.EncodedObject) error) error {
- return nil
+ for {
+ o, err := iter.Next()
+ if err != nil {
+ if err == io.EOF {
+ return nil
+ }
+ return err
+ }
+
+ if err := cb(o); err != nil {
+ return err
+ }
+ }
}
func (iter *packfileIter) Close() {
@@ -543,9 +554,20 @@ func (iter *objectsIter) Next() (plumbing.EncodedObject, error) {
return obj, err
}
-// ForEach is never called since is used inside of a MultiObjectIterator
func (iter *objectsIter) ForEach(cb func(plumbing.EncodedObject) error) error {
- return nil
+ for {
+ o, err := iter.Next()
+ if err != nil {
+ if err == io.EOF {
+ return nil
+ }
+ return err
+ }
+
+ if err := cb(o); err != nil {
+ return err
+ }
+ }
}
func (iter *objectsIter) Close() {