class Stackify::Worker
Attributes
name[R]
type[R]
Public Class Methods
new(name = nil)
click to toggle source
# File lib/stackify/workers/worker.rb, line 8 def initialize name = nil @type = :common @name = name ? name : generate_name @name += " ##{self.id}" @scheduler = Stackify::Scheduler.new Stackify.internal_log :info, "[Worker] Created worker: #{@name}" Stackify.add_dependant_worker self end
Public Instance Methods
alive?()
click to toggle source
# File lib/stackify/workers/worker.rb, line 43 def alive? @worker_thread.try(:alive?) end
async_perform(period=ScheduleDelay.new, task)
click to toggle source
# File lib/stackify/workers/worker.rb, line 17 def async_perform period=ScheduleDelay.new, task run_scheduler task, period end
backtrace()
click to toggle source
# File lib/stackify/workers/worker.rb, line 39 def backtrace @worker_thread.try(:backtrace) end
id()
click to toggle source
# File lib/stackify/workers/worker.rb, line 47 def id object_id end
perform(period=ScheduleDelay.new, task)
click to toggle source
# File lib/stackify/workers/worker.rb, line 21 def perform period=ScheduleDelay.new, task run_scheduler task, period, true end
shutdown!()
click to toggle source
# File lib/stackify/workers/worker.rb, line 25 def shutdown! Stackify.delete_worker self if @worker_thread Stackify.internal_log :debug, "Thread with name \"#{@name}\" is terminated!" Thread.kill @worker_thread else Stackify.internal_log :warn, "Thread with name \"#{@name}\" is terminated with exception!" end end
status()
click to toggle source
# File lib/stackify/workers/worker.rb, line 35 def status @worker_thread.try(:status) end
Private Instance Methods
generate_name()
click to toggle source
# File lib/stackify/workers/worker.rb, line 52 def generate_name 'Untitled worker' end
run_scheduler(task, delay, sync = false)
click to toggle source
# File lib/stackify/workers/worker.rb, line 56 def run_scheduler task, delay, sync = false @worker_thread = Thread.new do @scheduler.run delay, task after_perform @scheduler.task_result if respond_to? :after_perform shutdown! end @worker_thread.join if sync && @worker_thread.alive? end