Sha256: 33226ea1c3018ca92c619bd6861d832d8a70f81c5df9f9ebca6b6c36754a2160

Contents?: true

Size: 1.09 KB

Versions: 11

Compression:

Stored size: 1.09 KB

Contents

require 'celluloid'

class Eye::Group

  include Celluloid

  autoload :Call,     'eye/group/call'
  autoload :Chain,    'eye/group/chain'
  autoload :Data,     'eye/group/data'

  include Eye::Process::Scheduler
  include Eye::Group::Call
  include Eye::Group::Chain
  include Eye::Group::Data

  attr_reader :processes, :name, :hidden, :config

  def initialize(name, config)
    @name = name
    @config = config
    @processes = Eye::Utils::AliveArray.new
    @hidden = (name == '__default__')
    debug { 'created' }
  end

  def logger_tag
    full_name
  end

  def app_name
    @config[:application]
  end

  def full_name
    @full_name ||= "#{app_name}:#{@name}"
  end

  def add_process(process)
    @processes << process
  end

  # sort processes in name order
  def resort_processes
    @processes = @processes.sort_by(&:name)
  end

  def clear
    @processes = Eye::Utils::AliveArray.new
  end

  def sub_object?(obj)
    @processes.include?(obj)
  end

  # to sort groups
  def <=>(other)
    if hidden
      1
    elsif other.hidden
      -1
    else
      name <=> other.name
    end
  end

end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
eye-0.10.1.pre lib/eye/group.rb
eye-0.10.0 lib/eye/group.rb
eye-0.10.0.alpha2 lib/eye/group.rb
eye-0.10.0.alpha lib/eye/group.rb
eye-0.9.4.nosigar lib/eye/group.rb
eye-0.9.4 lib/eye/group.rb
eye-0.9.3 lib/eye/group.rb
eye-0.9.2.nosigar lib/eye/group.rb
eye-0.9.2 lib/eye/group.rb
eye-0.9.1 lib/eye/group.rb
eye-0.9.pre lib/eye/group.rb