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

Constructor Details

#initialize(logger) ⇒ AbstractEmployee

Returns a new instance of AbstractEmployee.



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

def initialize(logger)
  @logger = logger
end

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

#loggerObject (readonly)

Returns the value of attribute logger.



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

def logger
  @logger
end

Instance Method Details

#force_work_stopObject



57
58
# File 'lib/employer/employees/abstract_employee.rb', line 57

def force_work_stop
end

#freeObject



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

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

#free?Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/employer/employees/abstract_employee.rb', line 32

def free?
  job.nil?
end

#perform_jobObject



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

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_workingObject



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

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

#wait_for_completionObject



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

def wait_for_completion
  work_state(true)
end

#work(job) ⇒ Object



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

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

#work_completed?Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/employer/employees/abstract_employee.rb', line 40

def work_completed?
  true if work_state == :complete
end

#work_failed?Boolean

Returns:

  • (Boolean)


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

def work_failed?
  true if work_state == :failed
end

#work_in_progress?Boolean

Returns:

  • (Boolean)


36
37
38
# File 'lib/employer/employees/abstract_employee.rb', line 36

def work_in_progress?
  true if work_state == :busy
end

#work_state(wait = false) ⇒ Object



54
55
# File 'lib/employer/employees/abstract_employee.rb', line 54

def work_state(wait = false)
end