Module: AWS::Core::Collection::Limitable
- Includes:
- AWS::Core::Collection, Enumerable
- Included in:
- AutoScaling::ActivityCollection, AutoScaling::GroupCollection, AutoScaling::InstanceCollection, AutoScaling::LaunchConfigurationCollection, AutoScaling::NotificationConfigurationCollection, AutoScaling::ScalingPolicyCollection, AutoScaling::ScheduledActionCollection, AutoScaling::TagCollection, DynamoDB::ItemCollection, DynamoDB::TableCollection, IAM::Collection, SimpleDB::ItemCollection, SimpleEmailService::IdentityCollection, SimpleWorkflow::DomainCollection, SimpleWorkflow::HistoryEventCollection, SimpleWorkflow::WorkflowExecutionCollection
- Defined in:
- lib/aws/core/collection/limitable.rb
Overview
AWS::Core::Collection::Limitable is used by collections that may truncate responses but that also accept a upper limit of results to return in a single request.
See AWS::Core::Collection for documentation on the available methods.
Instance Method Summary collapse
Methods included from AWS::Core::Collection
#each, #enum, #first, #in_groups_of, #page
Instance Method Details
#each_batch(options = {}, &block) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/aws/core/collection/limitable.rb', line 30 def each_batch = {}, &block each_opts = .dup ## limit and batch size should accept string values like '10' limit = each_opts.delete(:limit) || _limit limit = limit.to_i if limit batch_size = each_opts.delete(:batch_size) batch_size = batch_size.to_i if batch_size next_token = each_opts.delete(:next_token) total = 0 # count of items yeilded across all batches begin max = nil if limit or batch_size max = [] max << (limit - total) if limit max << batch_size if batch_size max = max.min end batch = [] next_token = _each_item(next_token, max, each_opts.dup) do |item| total += 1 batch << item end yield(batch) end until next_token.nil? or (limit and limit == total) next_token end |