class Lowkiq::Schedulers::Seq

Public Class Methods

new(wait) click to toggle source
# File lib/lowkiq/schedulers/seq.rb, line 4
def initialize(wait)
  @wait = wait
end

Public Instance Methods

build_job(shard_handlers) click to toggle source
# File lib/lowkiq/schedulers/seq.rb, line 8
def build_job(shard_handlers)
  shard_enumerator = shard_handlers.cycle
  processed = []

  lambda do
    if processed.length == shard_handlers.length
      all_failed = processed.all? { |ok| !ok }
      processed.clear
      if all_failed
        @wait.call
        return
      end
    end

    shard_handler = shard_enumerator.next
    processed << shard_handler.process
  end
end