Class: Employer::Employees::AbstractEmployee

Inherits:
Object
  • Object
show all
Defined in:
lib/employer/employees/abstract_employee.rb

Direct Known Subclasses

ForkingEmployee, ThreadingEmployee

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#jobObject (readonly)

Returns the value of attribute job.



6
7
8
# File 'lib/employer/employees/abstract_employee.rb', line 6

def job
  @job
end

Instance Method Details

#force_work_stopObject



51
52
# File 'lib/employer/employees/abstract_employee.rb', line 51

def force_work_stop
end

#freeObject



42
43
44
45
46
# File 'lib/employer/employees/abstract_employee.rb', line 42

def free
  return unless work_completed? || work_failed?
  @work_state = nil
  @job = nil
end

#free?Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/employer/employees/abstract_employee.rb', line 26

def free?
  job.nil?
end

#perform_jobObject



13
14
15
# File 'lib/employer/employees/abstract_employee.rb', line 13

def perform_job
  job.perform
end

#stop_workingObject



21
22
23
24
# File 'lib/employer/employees/abstract_employee.rb', line 21

def stop_working
  return if work_completed? || work_failed?
  force_work_stop
end

#wait_for_completionObject



17
18
19
# File 'lib/employer/employees/abstract_employee.rb', line 17

def wait_for_completion
  work_state(true)
end

#work(job) ⇒ Object



8
9
10
11
# File 'lib/employer/employees/abstract_employee.rb', line 8

def work(job)
  raise Employer::Errors::EmployeeBusy unless free?
  @job = job
end

#work_completed?Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/employer/employees/abstract_employee.rb', line 34

def work_completed?
  true if work_state == :complete
end

#work_failed?Boolean

Returns:

  • (Boolean)


38
39
40
# File 'lib/employer/employees/abstract_employee.rb', line 38

def work_failed?
  true if work_state == :failed
end

#work_in_progress?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/employer/employees/abstract_employee.rb', line 30

def work_in_progress?
  true if work_state == :busy
end

#work_state(wait = false) ⇒ Object



48
49
# File 'lib/employer/employees/abstract_employee.rb', line 48

def work_state(wait = false)
end