Class: Eye::ChildProcess

Inherits:
Object
  • Object
show all
Includes:
Celluloid, Logger::Helpers, Process::Commands, Process::Config, Process::Data, Process::Notify, Process::Scheduler, Process::System, Process::Watchers
Defined in:
lib/eye/child_process.rb

Constant Summary

Constants included from Process::Notify

Process::Notify::LEVELS

Constants included from Process::Config

Process::Config::DEFAULTS

Instance Attribute Summary collapse

Attributes included from Process::Scheduler

#current_scheduled_command, #last_scheduled_at, #last_scheduled_command, #last_scheduled_reason

Attributes included from Logger::Helpers

#logger

Instance Method Summary collapse

Methods included from Process::Scheduler

included, #schedule, #schedule_history, #schedule_in, #scheduled_action, #scheduler_actions_list

Methods included from Process::Notify

#notify

Methods included from Process::Data

#debug_data, #self_status_data, #sub_object?

Methods included from Process::System

#clear_pid_file, #execute, #failsafe_load_pid, #failsafe_save_pid, #load_pid_from_file, #pid_file_ctime, #process_realy_running?, #save_pid_to_file, #send_signal, #set_pid_from_file, #wait_for_condition

Methods included from Process::Watchers

#add_watchers, #remove_watchers

Methods included from Process::Config

#[], #c, #control_pid?, #prepare_config, #update_config

Methods included from Process::Commands

#restart_process, #start_process, #stop_process

Constructor Details

#initialize(pid, config = {}, logger_prefix = nil) ⇒ ChildProcess

Returns a new instance of ChildProcess.



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/eye/child_process.rb', line 32

def initialize(pid, config = {}, logger_prefix = nil)
  raise 'Empty pid' unless pid

  @pid = pid
  @config = prepare_config(config)
  @name = "child-#{pid}"
  @full_name = [logger_prefix, @name] * ':'

  @logger = Eye::Logger.new(@full_name)
  
  @watchers = {}

  debug "start monitoring CHILD config: #{@config.inspect}"

  start_checkers
end

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.



30
31
32
# File 'lib/eye/child_process.rb', line 30

def config
  @config
end

#full_nameObject (readonly)

Returns the value of attribute full_name.



30
31
32
# File 'lib/eye/child_process.rb', line 30

def full_name
  @full_name
end

#nameObject (readonly)

Returns the value of attribute name.



30
31
32
# File 'lib/eye/child_process.rb', line 30

def name
  @name
end

#pidObject (readonly)

Returns the value of attribute pid.



30
31
32
# File 'lib/eye/child_process.rb', line 30

def pid
  @pid
end

#watchersObject (readonly)

Returns the value of attribute watchers.



30
31
32
# File 'lib/eye/child_process.rb', line 30

def watchers
  @watchers
end

Instance Method Details

#deleteObject



82
83
# File 'lib/eye/child_process.rb', line 82

def delete 
end

#destroyObject



85
86
87
88
# File 'lib/eye/child_process.rb', line 85

def destroy
  remove_watchers
  terminate
end

#monitorObject



76
77
# File 'lib/eye/child_process.rb', line 76

def monitor
end

#restartObject



68
69
70
71
72
73
74
# File 'lib/eye/child_process.rb', line 68

def restart
  if self[:restart_command]
    execute_restart_command
  else
    stop
  end    
end

#send_command(command, *args) ⇒ Object



57
58
59
# File 'lib/eye/child_process.rb', line 57

def send_command(command, *args)
  schedule command, *args, Eye::Reason::User.new(command)
end

#signal(sig) ⇒ Object



90
91
92
93
94
95
# File 'lib/eye/child_process.rb', line 90

def signal(sig)
  if self.pid
    res = send_signal(sig)
    info "send signal #{sig} to #{self.pid} = #{res}"
  end
end

#startObject



61
62
# File 'lib/eye/child_process.rb', line 61

def start
end

#stateObject



49
50
51
# File 'lib/eye/child_process.rb', line 49

def state
  :up
end

#status_data(debug = false) ⇒ Object



97
98
99
# File 'lib/eye/child_process.rb', line 97

def status_data(debug = false)
  self_status_data(debug)
end

#stopObject



64
65
66
# File 'lib/eye/child_process.rb', line 64

def stop
  kill_process
end

#unmonitorObject



79
80
# File 'lib/eye/child_process.rb', line 79

def unmonitor
end

#up?Boolean

Returns:

  • (Boolean)


53
54
55
# File 'lib/eye/child_process.rb', line 53

def up?
  state == :up
end