class ServerEngine::MultiProcessServer
Public Class Methods
new(worker_module, load_config_proc={}, &block)
click to toggle source
Calls superclass method
# File lib/serverengine/multi_process_server.rb, line 26 def initialize(worker_module, load_config_proc={}, &block) @pm = ProcessManager.new( auto_tick: false, graceful_kill_signal: Signals::GRACEFUL_STOP, immediate_kill_signal: Signals::IMMEDIATE_STOP, enable_heartbeat: true, auto_heartbeat: true, on_heartbeat_error: Proc.new do @logger.fatal "parent process unexpectedly terminated" exit 1 end ) super(worker_module, load_config_proc, &block) @worker_process_name = @config[:worker_process_name] @unrecoverable_exit_codes = @config.fetch(:unrecoverable_exit_codes, []) end
Public Instance Methods
logger=(logger)
click to toggle source
Calls superclass method
# File lib/serverengine/multi_process_server.rb, line 51 def logger=(logger) super @pm.logger = logger end
run()
click to toggle source
Calls superclass method
# File lib/serverengine/multi_process_server.rb, line 45 def run super ensure @pm.close end
Private Instance Methods
reload_config()
click to toggle source
Calls superclass method
# File lib/serverengine/multi_process_server.rb, line 58 def reload_config super @chuser = @config[:worker_chuser] @chgroup = @config[:worker_chgroup] @chumask = @config[:worker_chumask] @pm.configure(@config, prefix: 'worker_') nil end
start_worker(wid)
click to toggle source
# File lib/serverengine/multi_process_server.rb, line 70 def start_worker(wid) w = create_worker(wid) w.before_fork begin pmon = @pm.fork do |t| $0 = @worker_process_name % [wid] if @worker_process_name w.install_signal_handlers Privilege.change(@chuser, @chgroup) File.umask(@chumask) if @chumask ## recreate the logger created at Server#main #create_logger w.main end ensure w.after_start end return WorkerMonitor.new(w, wid, pmon, unrecoverable_exit_codes: @unrecoverable_exit_codes) end
wait_tick()
click to toggle source
# File lib/serverengine/multi_process_server.rb, line 95 def wait_tick @pm.tick(0.5) end