Class: RailVerdict::ProcessRunner::Registry
- Inherits:
-
Object
- Object
- RailVerdict::ProcessRunner::Registry
- Defined in:
- lib/rail_verdict/process_runner.rb
Instance Method Summary collapse
-
#initialize ⇒ Registry
constructor
A new instance of Registry.
- #register(pid) ⇒ Object
- #size ⇒ Object
- #terminate_all ⇒ Object
- #unregister(pid) ⇒ Object
Constructor Details
#initialize ⇒ Registry
Returns a new instance of Registry.
248 249 250 |
# File 'lib/rail_verdict/process_runner.rb', line 248 def initialize @pids = {} end |
Instance Method Details
#register(pid) ⇒ Object
252 253 254 |
# File 'lib/rail_verdict/process_runner.rb', line 252 def register(pid) @pids[pid] = true end |
#size ⇒ Object
260 261 262 |
# File 'lib/rail_verdict/process_runner.rb', line 260 def size @pids.size end |
#terminate_all ⇒ Object
264 265 266 267 268 269 270 271 272 273 274 275 276 277 |
# File 'lib/rail_verdict/process_runner.rb', line 264 def terminate_all pids = @pids.keys return if pids.empty? pids.each { |pid| signal_group(pid, "TERM") } deadline = Process.clock_gettime(Process::CLOCK_MONOTONIC) + ProcessRunner::TERM_GRACE_SECONDS sleep 0.01 while Process.clock_gettime(Process::CLOCK_MONOTONIC) < deadline pids.each do |pid| signal_group(pid, "KILL") end # The active runner owns waitpid; the signal path must not reap the # child before its normal cleanup resumes. @pids.clear end |
#unregister(pid) ⇒ Object
256 257 258 |
# File 'lib/rail_verdict/process_runner.rb', line 256 def unregister(pid) @pids.delete(pid) end |