class Arsenicum::Core::Worker::InvokerThread

Attributes

task_request[RW]

Public Class Methods

new(worker) click to toggle source
Calls superclass method
# File lib/arsenicum/core/worker.rb, line 231
def initialize(worker)
  super do
    loop do
      begin
        next sleep(0.5) unless task_request
      rescue Interrupt
        break
      end
      (success_handler, failure_handler, task_id, parameter) = task_request
      self.task_request = nil

      begin
        worker.ask task_id, *parameter
        info worker, message: "Completed processing: #{task_id}"
        success_handler.call
      rescue Interrupt => e
        error worker, exception: e
        failure_handler.call e
        break
      rescue Exception => e
        error worker, exception: e
        failure_handler.call e
      ensure
        worker.return_to_broker
      end
    end
  end
end

Public Instance Methods

ask(success_handler, failure_handler, task_id, *parameters) click to toggle source
# File lib/arsenicum/core/worker.rb, line 227
def ask(success_handler, failure_handler, task_id, *parameters)
  self.task_request = [success_handler, failure_handler, task_id, parameters]
end