class Daikon::Daemon

Constants

INFO_INTERVAL
SUMMARY_INTERVAL

Public Class Methods

run() click to toggle source
# File lib/daikon/daemon.rb, line 18
def self.run
  @@run
end
run=(run) click to toggle source
# File lib/daikon/daemon.rb, line 14
def self.run=(run)
  @@run = run
end
sleep_time() click to toggle source
# File lib/daikon/daemon.rb, line 10
def self.sleep_time
  @@sleep_time ||= 1
end
sleep_time=(sleep_time) click to toggle source
# File lib/daikon/daemon.rb, line 6
def self.sleep_time=(sleep_time)
  @@sleep_time = sleep_time
end
start(argv, ontop = false) click to toggle source
# File lib/daikon/daemon.rb, line 22
def self.start(argv, ontop = false)
  self.run = true
  config = Daikon::Configuration.new(argv)

  if argv.include?("-v") || argv.include?("--version")
    puts "Daikon v#{VERSION}"
    return
  end

  Daemons.run_proc("daikon", :ARGV => argv, :log_output => true, :backtrace => true, :ontop => ontop) do
    if argv.include?("run")
      logger = Logger.new(STDOUT)
    else
      logger = Logger.new("/tmp/radish.log")
    end

    if port = ENV["PORT"]
      logger.info "Port detected, starting server on port #{port}"
      Daikon::Server.start(logger, port)
    end

    rotated_at = reported_at = Time.now
    client = Daikon::Client.new

    client.setup(config, logger)
    client.start_monitor

    while self.run do
      now = Time.now

      if now - reported_at >= sleep_time * INFO_INTERVAL.to_i
        client.report_info
        reported_at = now
      end

      if now - rotated_at >= sleep_time * SUMMARY_INTERVAL.to_i
        client.rotate_monitor(rotated_at, now)
        rotated_at = now
      end

      sleep sleep_time
    end
  end
end