Sha256: 60d50d2b5f89de8e7a803e99152091e93d939c3f493cf37fe16c5413ffa05420
Contents?: true
Size: 729 Bytes
Versions: 2
Compression:
Stored size: 729 Bytes
Contents
module RankMirror class Mirrors def initialize(mirrors) @mirrors = mirrors end 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 end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
rankmirror-1.1.0 | lib/rankmirror/mirrors.rb |
rankmirror-1.0.0 | lib/rankmirror/mirrors.rb |