class Syncano::BatchQueue

Class representing queues used in batch requests

Constants

REQUEST_LIMIT

Limit for amount of batch operations send in one request

Attributes

client[RW]
queue[RW]
responses[RW]

Public Class Methods

new(client) click to toggle source

Constructor for Syncano::BatchQueue @param [Syncano::Clients::Base] client

Calls superclass method
# File lib/syncano/batch_queue.rb, line 10
def initialize(client)
  super()
  self.client = client
  self.queue = []
  self.responses = []
end

Public Instance Methods

<<(element) click to toggle source

Alias for “add” method @param [Syncano::BatchQueueElement] element

# File lib/syncano/batch_queue.rb, line 26
def <<(element)
  add(element)
end
add(element) click to toggle source

Adds element to the queue and prune it if is full @param [Syncano::BatchQueueElement] element

# File lib/syncano/batch_queue.rb, line 19
def add(element)
  self.queue << element
  prune! while full?
end
count() click to toggle source

Counts elements in the queue @return [Integer]

# File lib/syncano/batch_queue.rb, line 32
def count
  queue.count
end
full?() click to toggle source

Checks if queue is full @return [TrueClass, FalseClass]

# File lib/syncano/batch_queue.rb, line 38
def full?
  count >= REQUEST_LIMIT
end
prune!() click to toggle source

Prunes queue and makes batch request to the api @return [Array] collection of Syncano::Response objects

# File lib/syncano/batch_queue.rb, line 44
def prune!
  part = self.queue.slice!(0, 10)
  ::Jimson::Client.batch(client) do |batch_client|
    part.each do |element|
      element.perform!(batch_client)
    end
  end.collect { |response| self.responses << response }
end