Class: PerfectQueue::Multiprocess::ChildProcess
- Inherits:
-
ThreadProcessor
- Object
- ThreadProcessor
- PerfectQueue::Multiprocess::ChildProcess
- Defined in:
- lib/perfectqueue/multiprocess/child_process.rb
Constant Summary collapse
- HEARTBEAT_PACKET =
[0].pack('C')
Class Method Summary collapse
Instance Method Summary collapse
- #child_heartbeat ⇒ Object
-
#initialize(runner, config, wpipe) ⇒ ChildProcess
constructor
A new instance of ChildProcess.
-
#join ⇒ Object
override.
-
#keepalive ⇒ Object
override.
- #logrotated ⇒ Object
- #run ⇒ Object
- #stop(immediate) ⇒ Object
Methods inherited from ThreadProcessor
Constructor Details
#initialize(runner, config, wpipe) ⇒ ChildProcess
Returns a new instance of ChildProcess.
27 28 29 30 31 32 |
# File 'lib/perfectqueue/multiprocess/child_process.rb', line 27 def initialize(runner, config, wpipe) @wpipe = wpipe @wpipe.sync = true super(runner, config) @sig = install_signal_handlers end |
Class Method Details
.run(runner, config, wpipe) ⇒ Object
23 24 25 |
# File 'lib/perfectqueue/multiprocess/child_process.rb', line 23 def self.run(runner, config, wpipe) new(runner, config, wpipe).run end |
Instance Method Details
#child_heartbeat ⇒ Object
58 59 60 61 62 63 64 65 |
# File 'lib/perfectqueue/multiprocess/child_process.rb', line 58 def child_heartbeat @wpipe.write HEARTBEAT_PACKET rescue @log.error "Parent process unexpectedly died. Exiting worker pid=#{Process.pid}: #{$!}" stop(true) Process.kill(:KILL, Process.pid) exit! 137 end |
#join ⇒ Object
override
45 46 47 |
# File 'lib/perfectqueue/multiprocess/child_process.rb', line 45 def join # do nothing end |
#keepalive ⇒ Object
override
50 51 52 |
# File 'lib/perfectqueue/multiprocess/child_process.rb', line 50 def keepalive # do nothing end |
#logrotated ⇒ Object
54 55 56 |
# File 'lib/perfectqueue/multiprocess/child_process.rb', line 54 def logrotated @log.reopen! end |
#run ⇒ Object
34 35 36 37 |
# File 'lib/perfectqueue/multiprocess/child_process.rb', line 34 def run super @sig.shutdown end |
#stop(immediate) ⇒ Object
39 40 41 42 |
# File 'lib/perfectqueue/multiprocess/child_process.rb', line 39 def stop(immediate) @log.info "Exiting worker pid=#{Process.pid}" super end |