Class: Arsenicum::Core::Worker::InvokerThread

Inherits:
Thread
  • Object
show all
Defined in:
lib/arsenicum/core/worker.rb

Instance Method Summary collapse

Constructor Details

#initialize(worker) ⇒ InvokerThread



231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
# 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

      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
        self.task_request = nil
        worker.return_to_broker
      end
    end
  end
end

Instance Method Details

#ask(success_handler, failure_handler, task_id, *parameters) ⇒ Object



227
228
229
# 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