class Employer::Employees::ForkingEmployee
Public Instance Methods
force_work_stop()
click to toggle source
# File lib/employer/employees/forking_employee.rb, line 45 def force_work_stop return if free? Process.kill("KILL", @job_pid) work_state(true) end
free()
click to toggle source
Calls superclass method
Employer::Employees::AbstractEmployee#free
# File lib/employer/employees/forking_employee.rb, line 22 def free super @job_pid = nil end
work(job)
click to toggle source
Calls superclass method
Employer::Employees::AbstractEmployee#work
# File lib/employer/employees/forking_employee.rb, line 6 def work(job) super @job_pid = fork do state = nil begin perform_job state = 0 ensure state = 1 if state.nil? exit(state) end end end
work_state(wait = false)
click to toggle source
# File lib/employer/employees/forking_employee.rb, line 27 def work_state(wait = false) return @work_state if [:complete, :failed].include?(@work_state) @work_state = :busy flags = wait == false ? Process::WNOHANG : 0 pid, status = Process.waitpid2(@job_pid, flags) if pid if status.exitstatus == 0 @work_state = :complete else @work_state = :failed end end @work_state end