class Karousel
Implements karousel
Constants
- STATUS
- VERSION
Attributes
seats[R]
size[R]
time_interval[R]
Public Class Methods
new(klass, size = 10, time_interval = 0, data = nil)
click to toggle source
# File lib/karousel.rb, line 17 def initialize(klass, size = 10, time_interval = 0, data = nil) @klass = klass @size = size @time_interval = time_interval @seats = [] @klass.load(data) if data end
version()
click to toggle source
# File lib/karousel.rb, line 13 def self.version VERSION end
Public Instance Methods
populate()
click to toggle source
# File lib/karousel.rb, line 25 def populate new_seats = [] @klass.populate(@size - @seats.size).each do |inst| new_seats << Job.new(inst) end @seats = new_seats + @seats end
run() { || ... }
click to toggle source
# File lib/karousel.rb, line 33 def run(&block) populate until @seats.empty? send_request sleep(@time_interval) check_response yield if block populate end end
Private Instance Methods
check_response()
click to toggle source
# File lib/karousel.rb, line 57 def check_response @seats = @seats[@cursor..-1] + @seats[0...@cursor] if @cursor != 0 @seats.size.times do job = @seats.shift if job.status != :failure && job.finished? job.process else @seats.push(job) end end @cursor = 0 end
send_request()
click to toggle source
# File lib/karousel.rb, line 46 def send_request @cursor = 0 @seats.each_with_index do |job, index| if job.status == STATUS[:sent] @cursor = index break end job.send end end