Class: Daemon::Cluster
Overview
Implements a cluster controlling daemon. The daemon itself itself forks a child process for each port.
Defined Under Namespace
Classes: PidFile
Class Method Summary collapse
-
.daemon_loop ⇒ Object
The main daemon loop.
-
.fork_server(port) ⇒ Object
Forks a child process with a specific port.
-
.start ⇒ Object
Starts child processes and calls the main loop.
-
.start_servers ⇒ Object
Starts child processes.
-
.stop ⇒ Object
Stops child processes.
-
.stop_servers ⇒ Object
Stops child processes.
Methods inherited from Base
Class Method Details
.daemon_loop ⇒ Object
The main daemon loop. Does nothing for now.
57 58 59 |
# File 'lib/serverside/cluster.rb', line 57 def self.daemon_loop loop {sleep 60} end |
.fork_server(port) ⇒ Object
Forks a child process with a specific port.
34 35 36 37 38 39 |
# File 'lib/serverside/cluster.rb', line 34 def self.fork_server(port) fork do trap('TERM') {exit} server_loop(port) end end |
.start ⇒ Object
Starts child processes and calls the main loop.
62 63 64 65 |
# File 'lib/serverside/cluster.rb', line 62 def self.start start_servers daemon_loop end |
.start_servers ⇒ Object
Starts child processes.
42 43 44 45 46 47 |
# File 'lib/serverside/cluster.rb', line 42 def self.start_servers PidFile.delete ports.each do |p| PidFile.store_pid(fork_server(p)) end end |
.stop ⇒ Object
Stops child processes.
68 69 70 |
# File 'lib/serverside/cluster.rb', line 68 def self.stop stop_servers end |
.stop_servers ⇒ Object
Stops child processes.
50 51 52 53 54 |
# File 'lib/serverside/cluster.rb', line 50 def self.stop_servers pids = PidFile.recall_pids pids.each {|pid| begin; Process.kill('TERM', pid); rescue; end} PidFile.delete end |