class Remon::CheckRunner

Public Class Methods

new(task_queue:, num_workers:, result_queue:) click to toggle source
# File lib/remon/check_runner.rb, line 7
def initialize(task_queue:, num_workers:, result_queue:)
  @task_queue = task_queue
  @num_workers = num_workers
  @result_queue = result_queue
  @workers = []
end

Public Instance Methods

new_worker() click to toggle source
# File lib/remon/check_runner.rb, line 23
def new_worker
  Thread.new do
    loop { process_job }
  end
end
process_job() click to toggle source
# File lib/remon/check_runner.rb, line 29
def process_job
  j = @task_queue.pop
  logger.debug "running #{j}" if logger.debug?
  result = run_job j
  case result
  when Array
    result.each { |r| @result_queue << r if r}
  else
    @result_queue << result if result
  end
rescue => e
  logger.error "error while running job #{e.message}"
end
run_job(j) click to toggle source
# File lib/remon/check_runner.rb, line 44
def run_job(j)
  if @num_workers > 1
    j.run_mutex
  else
    j.run
  end
end
start() click to toggle source
# File lib/remon/check_runner.rb, line 14
def start
  logger.debug "starting runners"
  @num_workers.times { @workers << new_worker }
end
stop() click to toggle source
# File lib/remon/check_runner.rb, line 19
def stop
  @workers.each { |t| Thread.kill t if (t && t.alive?)}
end