class Eye::Group
Attributes
config[R]
name[R]
processes[R]
Public Class Methods
new(name, config)
click to toggle source
# File lib/eye/group.rb, line 13 def initialize(name, config) @name = name @config = config @processes = Eye::Utils::AliveArray.new @hidden = (name == '__default__') debug 'created' end
Public Instance Methods
add_process(process)
click to toggle source
# File lib/eye/group.rb, line 38 def add_process(process) @processes << process end
app_name()
click to toggle source
# File lib/eye/group.rb, line 25 def app_name @config[:application] end
break_chain()
click to toggle source
# File lib/eye/group.rb, line 116 def break_chain info 'break chain' scheduler_clear_pending_list @chain_breaker = true end
clear()
click to toggle source
# File lib/eye/group.rb, line 122 def clear @processes = Eye::Utils::AliveArray.new end
debug_data()
click to toggle source
# File lib/eye/group.rb, line 70 def debug_data {:queue => scheduler_actions_list, :chain => chain_status} end
delete()
click to toggle source
# File lib/eye/group.rb, line 99 def delete async_schedule :delete terminate end
full_name()
click to toggle source
# File lib/eye/group.rb, line 29 def full_name @full_name ||= "#{app_name}:#{@name}" end
logger_tag()
click to toggle source
# File lib/eye/group.rb, line 21 def logger_tag full_name end
monitor()
click to toggle source
# File lib/eye/group.rb, line 104 def monitor chain_command :monitor end
resort_processes()
click to toggle source
sort processes in name order
# File lib/eye/group.rb, line 43 def resort_processes @processes = @processes.sort_by(&:name) end
restart()
click to toggle source
# File lib/eye/group.rb, line 95 def restart chain_command :restart end
send_command(command, *args)
click to toggle source
# File lib/eye/group.rb, line 74 def send_command(command, *args) info "send_command: #{command}" case command when :delete delete *args when :break_chain break_chain *args else schedule command, *args, Eye::Reason::User.new(command) end end
signal(sig)
click to toggle source
# File lib/eye/group.rb, line 112 def signal(sig) async_schedule :signal, sig end
start()
click to toggle source
# File lib/eye/group.rb, line 87 def start chain_command :start end
status_data(debug = false)
click to toggle source
# File lib/eye/group.rb, line 47 def status_data(debug = false) plist = @processes.map{|p| p.status_data(debug) } h = { name: name, type: :group, subtree: plist } h.merge!(debug: debug_data) if debug # show current chain if current_scheduled_command h.update(current_command: current_scheduled_command) if (chain_commands = scheduler_actions_list) && chain_commands.present? h.update(chain_commands: chain_commands) end if @chain_processes_current && @chain_processes_count h.update(chain_progress: [@chain_processes_current, @chain_processes_count]) end end h end
stop()
click to toggle source
# File lib/eye/group.rb, line 91 def stop async_schedule :stop end
sub_object?(obj)
click to toggle source
# File lib/eye/group.rb, line 126 def sub_object?(obj) @processes.include?(obj) end
unmonitor()
click to toggle source
# File lib/eye/group.rb, line 108 def unmonitor async_schedule :unmonitor end
update_config(cfg)
click to toggle source
# File lib/eye/group.rb, line 33 def update_config(cfg) @config = cfg @full_name = nil end
Private Instance Methods
async_schedule(command, *args)
click to toggle source
# File lib/eye/group.rb, line 132 def async_schedule(command, *args) info "send to all processes #{command} #{args.present? ? args*',' : nil}" @processes.each do |process| process.send_command(command, *args) end end