Class: Daemon::Cluster

Inherits:
Base show all
Defined in:
lib/serverside/cluster.rb

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

Methods inherited from Base

pid_fn

Class Method Details

.daemon_loopObject

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

.startObject

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_serversObject

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

.stopObject

Stops child processes.



68
69
70
# File 'lib/serverside/cluster.rb', line 68

def self.stop
  stop_servers
end

.stop_serversObject

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