Class: SafeTimeout::InterruptingChildProcess
- Inherits:
-
Object
- Object
- SafeTimeout::InterruptingChildProcess
- Defined in:
- lib/safe_timeout/interrupting_child_process.rb
Instance Method Summary collapse
-
#initialize(expiration) ⇒ InterruptingChildProcess
constructor
A new instance of InterruptingChildProcess.
- #notify_parent_of_expiration ⇒ Object
- #wait_for_timeout ⇒ Object
Constructor Details
#initialize(expiration) ⇒ InterruptingChildProcess
Returns a new instance of InterruptingChildProcess.
4 5 6 7 8 9 10 |
# File 'lib/safe_timeout/interrupting_child_process.rb', line 4 def initialize(expiration) @ppid = Process.ppid @expiration = expiration.to_f abort "Invalid pid to monitor: #{@ppid}" if @ppid.to_i.zero? abort "Invalid expiration: #{@expiration}" unless @expiration > 0.0 end |
Instance Method Details
#notify_parent_of_expiration ⇒ Object
12 13 14 |
# File 'lib/safe_timeout/interrupting_child_process.rb', line 12 def notify_parent_of_expiration SafeTimeout.send_signal('TRAP', @ppid) end |
#wait_for_timeout ⇒ Object
16 17 18 19 20 21 22 |
# File 'lib/safe_timeout/interrupting_child_process.rb', line 16 def wait_for_timeout Signal.trap('HUP') { exit 0 } sleep [@expiration - Time.now.to_f, 0.1].max notify_parent_of_expiration end |