class Employer::Employees::AbstractEmployee

Attributes

job[R]
logger[R]

Public Class Methods

before_fork(&block) click to toggle source
# File lib/employer/employees/abstract_employee.rb, line 12
def self.before_fork(&block)
  before_fork_hooks << block
end
before_fork_hooks() click to toggle source
# File lib/employer/employees/abstract_employee.rb, line 8
def self.before_fork_hooks
  @before_fork_hooks ||= []
end
new(logger) click to toggle source
# File lib/employer/employees/abstract_employee.rb, line 16
def initialize(logger)
  @logger = logger
end

Public Instance Methods

force_work_stop() click to toggle source
# File lib/employer/employees/abstract_employee.rb, line 66
def force_work_stop
end
free() click to toggle source
# File lib/employer/employees/abstract_employee.rb, line 57
def free
  return unless work_completed? || work_failed?
  @work_state = nil
  @job = nil
end
free?() click to toggle source
# File lib/employer/employees/abstract_employee.rb, line 41
def free?
  job.nil?
end
perform_job() click to toggle source
# File lib/employer/employees/abstract_employee.rb, line 26
def perform_job
  logger.debug("Employee #{self.object_id} is now performing job #{job.id}")
  job.perform
  logger.debug("Employee #{self.object_id} has now completed #{job.id}")
end
stop_working() click to toggle source
# File lib/employer/employees/abstract_employee.rb, line 36
def stop_working
  return if work_completed? || work_failed?
  force_work_stop
end
wait_for_completion() click to toggle source
# File lib/employer/employees/abstract_employee.rb, line 32
def wait_for_completion
  work_state(true)
end
work(job) click to toggle source
# File lib/employer/employees/abstract_employee.rb, line 20
def work(job)
  raise Employer::Errors::EmployeeBusy unless free?
  @job = job
  self.class.before_fork_hooks.each(&:call)
end
work_completed?() click to toggle source
# File lib/employer/employees/abstract_employee.rb, line 49
def work_completed?
  true if work_state == :complete
end
work_failed?() click to toggle source
# File lib/employer/employees/abstract_employee.rb, line 53
def work_failed?
  true if work_state == :failed
end
work_in_progress?() click to toggle source
# File lib/employer/employees/abstract_employee.rb, line 45
def work_in_progress?
  true if work_state == :busy
end
work_state(wait = false) click to toggle source
# File lib/employer/employees/abstract_employee.rb, line 63
def work_state(wait = false)
end