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