class Bluepill::Group

Attributes

logger[RW]
name[RW]
process_logger[RW]
processes[RW]

Public Class Methods

new(name, options = {}) click to toggle source
# File lib/bluepill/group.rb, line 6
def initialize(name, options = {})
  self.name = name
  self.processes = []
  self.logger = options[:logger]
end

Public Instance Methods

add_process(process) click to toggle source
# File lib/bluepill/group.rb, line 12
def add_process(process)
  process.logger = logger.prefix_with(process.name)
  processes << process
end
determine_initial_state() click to toggle source
# File lib/bluepill/group.rb, line 21
def determine_initial_state
  processes.each(&:determine_initial_state)
end
status(process_name = nil) click to toggle source
# File lib/bluepill/group.rb, line 50
def status(process_name = nil)
  lines = []
  if process_name.nil?
    prefix = name ? '  ' : ''
    lines << "#{name}:" if name

    processes.each do |process|
      lines << format('%s%s(pid:%s): %s', prefix, process.name, process.actual_pid, process.state)
      next unless process.monitor_children?
      process.children.each do |child|
        lines << format('  %s%s: %s', prefix, child.name, child.state)
      end
    end

  else
    processes.each do |process|
      next if process_name != process.name
      lines << format('%s%s(pid:%s): %s', prefix, process.name, process.actual_pid, process.state)
      lines << process.statistics.to_s
    end
  end
  lines << ''
end
tick() click to toggle source
# File lib/bluepill/group.rb, line 17
def tick
  processes.each(&:tick)
end