Sha256: cc1f1d61a8a376475b5eb77e1a38e33c279b4914a80adab61b390e0e98c9ea10
Contents?: true
Size: 1.32 KB
Versions: 1
Compression:
Stored size: 1.32 KB
Contents
class Repository < ActiveRecord::Base belongs_to :network six_guid attr_accessor :ping_value PING_PACKET_SIZE = 1372 def self.rank(pr = false) repos = self.find(:all) repos.each do |rep| puts "Processing #{rep.url}" if pr rep.ping_value = rep.ping! sleep 1 end repos.sort!{|a, b| a.ping_value <=> b.ping_value } repos.each_with_index do |rep,index| rep.priority = index rep.save end repos end def prio self.priority.nil? ? 9999 : self.priority end def ping! logger.info "Handling #{self.address}" out = %x[ping -n 10 -f -l #{PING_PACKET_SIZE} #{self.address}] vals = [] out.each_line do |l| l[/=([0-9]*)ms/] if $1 vals << $1.to_i end end logger.debug "Out: #{out}, Vals: #{vals}" bla = 0 vals.each {|v| bla += v } bla == 0 ? 9999 : bla / vals.size end def ping SixUpdaterWeb.run_program("ping", SixUpdaterWeb::BASE_PATH, "-f -l #{PING_PACKET_SIZE} -r 9 -n 30 -t #{self.address}") end def tracert SixUpdaterWeb.run_program("tracert", SixUpdaterWeb::BASE_PATH, "-d #{self.address}") end def address self.url.sub("rsync://", "") end def to_label "#{self.url}" end def to_updater_yml self.url end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
six-updater-web-0.23.6 | lib/six-updater-web/app/models/repository.rb |