class RankMirror::Mirrors
Public Class Methods
new(mirrors)
click to toggle source
# File lib/rankmirror/mirrors.rb, line 4 def initialize(mirrors) @mirrors = mirrors end
Public Instance Methods
sort_by_speed(options)
click to toggle source
# File lib/rankmirror/mirrors.rb, line 8 def sort_by_speed(options) speed_matrix = Hash.new size = @mirrors.length jobs = Queue.new @mirrors.each {|i| jobs.push i} workers = size.times.map do Thread.new do begin while x = jobs.pop(true) x << "/" unless x.index(/\/$/) uri = x + options.path + options.file speed = RankMirror::Speed.new(uri).get speed_matrix[x] = speed end rescue ThreadError end end end workers.map(&:join) speed_sorted = speed_matrix.values.sort.reverse sorted = Hash.new speed_sorted.each {|v| sorted[speed_matrix.key(v)] = v} return sorted end