class FastestServer::Fastest

Public Class Methods

new(targets, max, verbose) click to toggle source
# File lib/fastest_server/fastest.rb, line 3
def initialize(targets, max, verbose)
  @max = [max, targets.size].min
  @jobs = targets
  @verbose = verbose
  @checkbook = {}
  @workers = Array.new(@max) { |i| Worker.new(i, @jobs, @checkbook) }
  @watcher = Thread.new { watch } if @verbose
end

Public Instance Methods

give_me_answer() click to toggle source
# File lib/fastest_server/fastest.rb, line 12
def give_me_answer
  join
  clear_screen if @verbose
  Formatter.new(@checkbook.values).display!(@verbose)
end

Private Instance Methods

clear_screen() click to toggle source
# File lib/fastest_server/fastest.rb, line 32
def clear_screen
  system("clear || cls")
end
join() click to toggle source
# File lib/fastest_server/fastest.rb, line 36
def join
  @workers.each(&:join)
  @watcher.join if @verbose
end
refresh() click to toggle source
# File lib/fastest_server/fastest.rb, line 25
def refresh
  clear_screen
  puts "Status: "
  @workers.each { |w| puts "#{w.name}: #{w.current_status!}" }
  sleep(1)
end
watch() click to toggle source
# File lib/fastest_server/fastest.rb, line 20
def watch
  refresh until @jobs.empty? && @workers.all?(&:done?)
  2.times { refresh }
end