aboutsummaryrefslogtreecommitdiff
path: root/container_iterator.go
diff options
context:
space:
mode:
Diffstat (limited to 'container_iterator.go')
-rw-r--r--container_iterator.go25
1 files changed, 13 insertions, 12 deletions
diff --git a/container_iterator.go b/container_iterator.go
index ef0a77c..9ff9be9 100644
--- a/container_iterator.go
+++ b/container_iterator.go
@@ -19,6 +19,7 @@
package schwift
import (
+ "context"
"fmt"
"time"
)
@@ -86,8 +87,8 @@ func (i *ContainerIterator) getBase() *iteratorBase {
//
// This method offers maximal flexibility, but most users will prefer the
// simpler interfaces offered by Collect() and Foreach().
-func (i *ContainerIterator) NextPage(limit int) ([]*Container, error) {
- names, err := i.getBase().nextPage(limit)
+func (i *ContainerIterator) NextPage(ctx context.Context, limit int) ([]*Container, error) {
+ names, err := i.getBase().nextPage(ctx, limit)
if err != nil {
return nil, err
}
@@ -100,7 +101,7 @@ func (i *ContainerIterator) NextPage(limit int) ([]*Container, error) {
}
// NextPageDetailed is like NextPage, but includes basic metadata.
-func (i *ContainerIterator) NextPageDetailed(limit int) ([]ContainerInfo, error) {
+func (i *ContainerIterator) NextPageDetailed(ctx context.Context, limit int) ([]ContainerInfo, error) {
b := i.getBase()
var document []struct {
@@ -109,7 +110,7 @@ func (i *ContainerIterator) NextPageDetailed(limit int) ([]ContainerInfo, error)
LastModifiedStr string `json:"last_modified"`
Name string `json:"name"`
}
- err := b.nextPageDetailed(limit, &document)
+ err := b.nextPageDetailed(ctx, limit, &document)
if err != nil {
return nil, err
}
@@ -137,9 +138,9 @@ func (i *ContainerIterator) NextPageDetailed(limit int) ([]ContainerInfo, error)
// Foreach lists the container names matching this iterator and calls the
// callback once for every container. Iteration is aborted when a GET request fails,
// or when the callback returns a non-nil error.
-func (i *ContainerIterator) Foreach(callback func(*Container) error) error {
+func (i *ContainerIterator) Foreach(ctx context.Context, callback func(*Container) error) error {
for {
- containers, err := i.NextPage(-1)
+ containers, err := i.NextPage(ctx, -1)
if err != nil {
return err
}
@@ -156,9 +157,9 @@ func (i *ContainerIterator) Foreach(callback func(*Container) error) error {
}
// ForeachDetailed is like Foreach, but includes basic metadata.
-func (i *ContainerIterator) ForeachDetailed(callback func(ContainerInfo) error) error {
+func (i *ContainerIterator) ForeachDetailed(ctx context.Context, callback func(ContainerInfo) error) error {
for {
- infos, err := i.NextPageDetailed(-1)
+ infos, err := i.NextPageDetailed(ctx, -1)
if err != nil {
return err
}
@@ -177,10 +178,10 @@ func (i *ContainerIterator) ForeachDetailed(callback func(ContainerInfo) error)
// Collect lists all container names matching this iterator. For large sets of
// containers that cannot be retrieved at once, Collect handles paging behind
// the scenes. The return value is always the complete set of containers.
-func (i *ContainerIterator) Collect() ([]*Container, error) {
+func (i *ContainerIterator) Collect(ctx context.Context) ([]*Container, error) {
var result []*Container
for {
- containers, err := i.NextPage(-1)
+ containers, err := i.NextPage(ctx, -1)
if err != nil {
return nil, err
}
@@ -192,10 +193,10 @@ func (i *ContainerIterator) Collect() ([]*Container, error) {
}
// CollectDetailed is like Collect, but includes basic metadata.
-func (i *ContainerIterator) CollectDetailed() ([]ContainerInfo, error) {
+func (i *ContainerIterator) CollectDetailed(ctx context.Context) ([]ContainerInfo, error) {
var result []ContainerInfo
for {
- infos, err := i.NextPageDetailed(-1)
+ infos, err := i.NextPageDetailed(ctx, -1)
if err != nil {
return nil, err
}