Class: Salemove::ProcessHandler::CompositeProcess

Inherits:
Object
  • Object
show all
Defined in:
lib/salemove/process_handler/composite_process.rb

Instance Method Summary collapse

Constructor Details

#initialize(&block) ⇒ CompositeProcess

Returns a new instance of CompositeProcess.



12
13
14
15
16
# File 'lib/salemove/process_handler/composite_process.rb', line 12

def initialize(&block)
  @process_spawners = []
  @monitor = CompositeProcessMonitor.new
  instance_eval &block if block_given?
end

Instance Method Details

#add(process, service) ⇒ Object



18
19
20
21
# File 'lib/salemove/process_handler/composite_process.rb', line 18

def add(process, service)
  @monitor.add process.process_monitor
  @process_spawners << Proc.new { process.spawn service, blocking: false }
end

#blockObject



29
30
31
# File 'lib/salemove/process_handler/composite_process.rb', line 29

def block
  sleep 1 while @monitor.running?
end

#startObject



23
24
25
26
27
# File 'lib/salemove/process_handler/composite_process.rb', line 23

def start
  @process_spawners.each(&:call)
  @monitor.start
  block
end