class AllQ::Stats

Public Instance Methods

base_send(_data) click to toggle source
# File lib/allq/actions/stats.rb, line 55
def base_send(_data)
  {
    'action' => 'stats',
    'params' => {}
  }
end
breakout(results) click to toggle source
# File lib/allq/actions/stats.rb, line 40
def breakout(results)
  results.each do |server, s_data|
    s_data.delete('global')
    s_data.each do |tube, tube_data|
      interize(tube_data)
    end
  end
  results
end
interize(hash) click to toggle source
# File lib/allq/actions/stats.rb, line 50
def interize(hash)
  return {} if hash.nil? || hash.empty?
  hash.update(hash){ |_, v| v.to_i }
end
merge_tube_data(original_hash, new_hash) click to toggle source
# File lib/allq/actions/stats.rb, line 29
def merge_tube_data(original_hash, new_hash)
  if original_hash.nil?
    original_hash = {}
  end
  interize(new_hash)
  new_hash.each do |k, v|
    original_hash[k] = original_hash[k].to_i + v
  end
  original_hash
end
rcv(data) click to toggle source
# File lib/allq/actions/stats.rb, line 15
def rcv(data)
  return nil if data.to_s == '' || data.to_s.strip == '{}'
  results = JSON.parse(data)
  stats = {}
  return breakout(results) if @breakout

  results.each do |server, s_data|
    s_data.each do |tube, tube_data|
      stats[tube] = merge_tube_data(stats[tube], tube_data)
    end
  end
  stats
end
setup() click to toggle source
# File lib/allq/actions/stats.rb, line 4
def setup
end
snd(data) click to toggle source
# File lib/allq/actions/stats.rb, line 7
def snd(data)
  send_data = base_send(data)
  @breakout = data ? data[:breakout].to_s == "true" : false
  response = send_hash_as_json(send_data, true)
  rcv(response)
end