class Snmp2mkr::EngineThreads::Worker

Attributes

logger[R]
queue[R]
thread[R]

Public Class Methods

new(queue:, logger: Logger.new($stdout)) click to toggle source
# File lib/snmp2mkr/engine_threads/worker.rb, line 4
def initialize(queue:, logger: Logger.new($stdout))
  @queue = queue
  @logger = logger
  @thread = nil
end

Public Instance Methods

join() click to toggle source
# File lib/snmp2mkr/engine_threads/worker.rb, line 16
def join
  return unless running?
  @thread.join
end
main_loop() click to toggle source
# File lib/snmp2mkr/engine_threads/worker.rb, line 26
def main_loop
  while job = queue.pop
    process job
  end
rescue Exception => e
  logger.error "#{e.inspect}\n\t#{e.backtrace.join("\n\t")}"
  sleep 1
  retry
end
process(job) click to toggle source
# File lib/snmp2mkr/engine_threads/worker.rb, line 36
def process(job)
  logger.debug "processing job #{job.inspect}"
  job.perform!
end
running?() click to toggle source
# File lib/snmp2mkr/engine_threads/worker.rb, line 12
def running?
  @thread && @thread.alive?
end
start() click to toggle source
# File lib/snmp2mkr/engine_threads/worker.rb, line 21
def start
  return if running?
  @thread = Thread.new(&method(:main_loop))
end