class ActiveWorker::Controller

Attributes

configuration[R]

Public Class Methods

after_thread_launch(method) click to toggle source
# File lib/active_worker/controller.rb, line 68
def self.after_thread_launch(method)
  after_thread_launch_methods << method
end
after_thread_launch_methods() click to toggle source
# File lib/active_worker/controller.rb, line 72
def self.after_thread_launch_methods
  @after_thread_launch_methods ||= []
end
execute(configuration) click to toggle source
# File lib/active_worker/controller.rb, line 21
def self.execute(configuration)
  worker = new(configuration)
  worker.started
  worker.execute
  worker.finished
end
execute_expanded(configuration_id) click to toggle source
# File lib/active_worker/controller.rb, line 8
def self.execute_expanded(configuration_id)
  config = Configuration.find(configuration_id)
  configurations = config.expand_for_threads

  execute_concurrently(configurations)

  after_thread_launch_methods.each { |method| send(method, config, configurations) }

  wait_for_children
ensure
  worker_cleanup_methods.each { |method| send(method, configurations) }
end
handle_error(error, method, params) click to toggle source
# File lib/active_worker/controller.rb, line 28
def self.handle_error(error, method, params)
  configuration_id = params.shift
  configuration = Configuration.find(configuration_id)

  if threaded?
    FailureEvent.from_error(configuration, error)
  end

  if forking? && parent?
    ParentEvent.create_error_from_configuration(configuration, error)
    kill_children
    wait_for_children
  end

  if forked?
    FailureEvent.create_error_from_configuration(configuration, error)
  end

rescue Exception => e
  puts "ERROR: While Handling #{error} Had : #{e}\n#{e.backtrace.join("\n")}"
end
handle_termination(params) click to toggle source
# File lib/active_worker/controller.rb, line 50
def self.handle_termination(params)
  if forking? && parent?
    kill_children
    wait_for_children
  end

  configuration_id = params.shift
  configuration = Configuration.find(configuration_id)

  if threaded?
    TerminationEvent.from_termination(configuration)
  end
  if forked?
    TerminationEvent.create_termination_from_configuration(configuration)
  end

end
new(configuration) click to toggle source
# File lib/active_worker/controller.rb, line 84
def initialize(configuration)
  @configuration = configuration
  setup
end
worker_cleanup(method) click to toggle source
# File lib/active_worker/controller.rb, line 76
def self.worker_cleanup(method)
  worker_cleanup_methods << method
end
worker_cleanup_methods() click to toggle source
# File lib/active_worker/controller.rb, line 80
def self.worker_cleanup_methods
  @worker_cleanup_methods ||= []
end

Public Instance Methods

execute() click to toggle source
# File lib/active_worker/controller.rb, line 97
def execute
  raise "Can't call execute on base controller #{configuration.inspect}'"
end
finished() click to toggle source
# File lib/active_worker/controller.rb, line 101
def finished
  configuration.finished
end
setup() click to toggle source
# File lib/active_worker/controller.rb, line 89
def setup

end
started() click to toggle source
# File lib/active_worker/controller.rb, line 93
def started
  configuration.started
end

Private Instance Methods

finished?(configurations) click to toggle source
# File lib/active_worker/controller.rb, line 107
def finished?(configurations)
  FinishedEvent.exists_for_configurations?(configurations)
end