require 'ganymed/collector'

module Ganymed
  class Collector
    class CPU < Base
      def collect!
        File.open('/proc/stat') do |f|
          cpu = f.readline.chomp.split[1,7].map do |x|
            x.to_i / hz
          end
          @sampler.emit(:derive, "os.cpu.user", cpu[0])
          @sampler.emit(:derive, "os.cpu.nice", cpu[1])
          @sampler.emit(:derive, "os.cpu.system", cpu[2])
          @sampler.emit(:derive, "os.cpu.idle", cpu[3])
          @sampler.emit(:derive, "os.cpu.iowait", cpu[4])
          @sampler.emit(:derive, "os.cpu.irq", cpu[5])
          @sampler.emit(:derive, "os.cpu.softirq", cpu[6])
        end
      end

      def interval
        @config.interval.tap{} or 0.2
      end

      def hz
        @config.hz.tap{} or 100
      end
    end
  end
end