class Archfiend::SubprocessLoop
Constants
- EXCEPTION_DELAY
Attributes
subclasses[R]
subprocess_pids[R]
app[RW]
Public Class Methods
inherited(child_class)
click to toggle source
# File lib/archfiend/subprocess_loop.rb, line 15 def inherited(child_class) @subclasses ||= [] @subclasses.push(child_class) @subprocess_pids ||= [] # rubocop:disable Naming/MemoizedInstanceVariableName end
kill_all()
click to toggle source
# File lib/archfiend/subprocess_loop.rb, line 34 def kill_all return if !@subprocess_pids || @subprocess_pids.empty? @subprocess_pids.each do |spid| begin Process.kill('TERM', spid) rescue Errno::ESRCH, Errno::EPERM # rubocop:disable Lint/HandleExceptions # The list might contain some stale pids, if any of subprocesses terminated early end end end
start_all(app)
click to toggle source
# File lib/archfiend/subprocess_loop.rb, line 21 def start_all(app) (subclasses || []).each do |subclass| process_id = fork do instance = subclass.new instance.app = app app.logger.info "Starting subprocess #{subclass}" instance.run end @subprocess_pids << process_id Process.detach(process_id) end end