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