aboutsummaryrefslogtreecommitdiffstats
path: root/core/object.go
diff options
context:
space:
mode:
authorMáximo Cuadros <mcuadros@gmail.com>2016-08-15 23:09:33 +0200
committerMáximo Cuadros <mcuadros@gmail.com>2016-08-15 23:09:33 +0200
commit6b9a59be60de5b66aee14e9160ace80734008eca (patch)
treec302776360b0fd4f774f67f177870fda478b4258 /core/object.go
parented2e3b299e03e4bfd4c37bf5232e9fde05c0600d (diff)
downloadgo-git-6b9a59be60de5b66aee14e9160ace80734008eca.tar.gz
core: *Iter.ForEach method
Diffstat (limited to 'core/object.go')
-rw-r--r--core/object.go39
1 files changed, 39 insertions, 0 deletions
diff --git a/core/object.go b/core/object.go
index 36b669e..d777f4a 100644
--- a/core/object.go
+++ b/core/object.go
@@ -139,6 +139,28 @@ func (iter *ObjectLookupIter) Next() (Object, error) {
return obj, err
}
+// ForEach call the cb function for each object contained on this iter until
+// an error happends or the end of the iter is reached. If ErrStop is sent
+// the iteration is stop but no error is returned
+func (iter *ObjectLookupIter) ForEach(cb func(Object) error) error {
+ for _, hash := range iter.series {
+ obj, err := iter.storage.Get(hash)
+ if err != nil {
+ return err
+ }
+
+ if err := cb(obj); err != nil {
+ if err == ErrStop {
+ return nil
+ }
+
+ return nil
+ }
+ }
+
+ return nil
+}
+
// Close releases any resources used by the iterator.
func (iter *ObjectLookupIter) Close() {
iter.pos = len(iter.series)
@@ -173,6 +195,23 @@ func (iter *ObjectSliceIter) Next() (Object, error) {
return obj, nil
}
+// ForEach call the cb function for each object contained on this iter until
+// an error happends or the end of the iter is reached. If ErrStop is sent
+// the iteration is stop but no error is returned
+func (iter *ObjectSliceIter) ForEach(cb func(Object) error) error {
+ for _, o := range iter.series {
+ if err := cb(o); err != nil {
+ if err == ErrStop {
+ return nil
+ }
+
+ return nil
+ }
+ }
+
+ return nil
+}
+
// Close releases any resources used by the iterator.
func (iter *ObjectSliceIter) Close() {
iter.pos = len(iter.series)