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.
265 266 267 |
# File 'lib/rail_verdict/process_runner.rb', line 265 def initialize @pids = {} end |
Instance Method Details
#register(pid) ⇒ Object
269 270 271 |
# File 'lib/rail_verdict/process_runner.rb', line 269 def register(pid) @pids[pid] = true end |
#size ⇒ Object
277 278 279 |
# File 'lib/rail_verdict/process_runner.rb', line 277 def size @pids.size end |
#terminate_all ⇒ Object
281 282 283 284 285 286 287 288 289 290 291 292 293 294 |
# File 'lib/rail_verdict/process_runner.rb', line 281 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
273 274 275 |
# File 'lib/rail_verdict/process_runner.rb', line 273 def unregister(pid) @pids.delete(pid) end |