Class: Up::Ruby::Cluster

Inherits:
Server
  • Object
show all
Defined in:
lib/up/ruby/cluster.rb

Instance Method Summary collapse

Constructor Details

#initialize(app:, host: 'localhost', port: 3000, scheme: 'http', ca_file: nil, cert_file: nil, key_file: nil, logger: Logger.new(STDERR), workers: nil) ⇒ Cluster

Returns a new instance of Cluster.



9
10
11
12
13
14
# File 'lib/up/ruby/cluster.rb', line 9

def initialize(app:, host: 'localhost', port: 3000, scheme: 'http', ca_file: nil, cert_file: nil, key_file: nil, logger: Logger.new(STDERR), workers: nil)
  super(app: app, host: host, port: port)
  @secret = Random.uuid
  @workers = workers || Etc.nprocessors
  @members = []
end

Instance Method Details

#listenObject



16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/up/ruby/cluster.rb', line 16

def listen
  raise "already running" unless @members.empty?
  @workers.times do
    @members << fork do
      @member_id = @members.size + 1
      super
    end
  end

  Process.waitall
  @members.each do |member|
    Process.kill("KILL", member)
  end
end

#stopObject



31
32
33
34
35
36
# File 'lib/up/ruby/cluster.rb', line 31

def stop
  if Up::CLI::stoppable?
    @members.each { |m| Process.kill(m) } 
    @members.clear
  end
end