class ServerEngine::MultiSpawnServer

Public Class Methods

new(worker_module, load_config_proc={}, &block) click to toggle source
Calls superclass method
# File lib/serverengine/multi_spawn_server.rb, line 25
def initialize(worker_module, load_config_proc={}, &block)
  if ServerEngine.windows?
    @pm = ProcessManager.new(
      auto_tick: false,
      graceful_kill_signal: Signals::GRACEFUL_STOP,
      immediate_kill_signal: false,
      enable_heartbeat: false,
    )
  else
    @pm = ProcessManager.new(
      auto_tick: false,
      graceful_kill_signal: Signals::GRACEFUL_STOP,
      immediate_kill_signal: Signals::IMMEDIATE_STOP,
      enable_heartbeat: false,
    )
  end

  super(worker_module, load_config_proc, &block)

  @reload_signal = @config[:worker_reload_signal]
  @unrecoverable_exit_codes = @config.fetch(:unrecoverable_exit_codes, [])
  @pm.command_sender = @command_sender
end

Public Instance Methods

logger=(logger) click to toggle source
Calls superclass method
# File lib/serverengine/multi_spawn_server.rb, line 55
def logger=(logger)
  super
  @pm.logger = logger
end
run() click to toggle source
Calls superclass method
# File lib/serverengine/multi_spawn_server.rb, line 49
def run
  super
ensure
  @pm.close
end

Private Instance Methods

reload_config() click to toggle source
Calls superclass method
# File lib/serverengine/multi_spawn_server.rb, line 62
def reload_config
  super

  @pm.configure(@config, prefix: 'worker_')

  nil
end
start_worker(wid) click to toggle source
# File lib/serverengine/multi_spawn_server.rb, line 70
def start_worker(wid)
  w = create_worker(wid)

  w.before_fork
  begin
    pmon = w.spawn(@pm)
  ensure
    w.after_start
  end

  return MultiProcessServer::WorkerMonitor.new(w, wid, pmon, @reload_signal, unrecoverable_exit_codes: @unrecoverable_exit_codes)
end
wait_tick() click to toggle source
# File lib/serverengine/multi_spawn_server.rb, line 83
def wait_tick
  @pm.tick(0.5)
end