Class: Delayed::Master::Core

Inherits:
Object
  • Object
show all
Defined in:
lib/delayed/master/core.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(argv) ⇒ Core

Returns a new instance of Core.



22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/delayed/master/core.rb', line 22

def initialize(argv)
  @config = Command.new(argv).config
  @logger = setup_logger(@config.log_file, @config.log_level)
  @workers = SafeArray.new

  @databases = Database.all(@config.databases)
  @callbacks = Callbacks.new(@config)
  @monitoring = Monitoring.new(self)
  @job_checker = JobChecker.new(self)
  @job_listener = JobListener.klass.new(self)
  @signaler = Signaler.new(self)
end

Instance Attribute Details

#callbacksObject (readonly)

Returns the value of attribute callbacks.



19
20
21
# File 'lib/delayed/master/core.rb', line 19

def callbacks
  @callbacks
end

#configObject (readonly)

Returns the value of attribute config.



19
20
21
# File 'lib/delayed/master/core.rb', line 19

def config
  @config
end

#databasesObject (readonly)

Returns the value of attribute databases.



19
20
21
# File 'lib/delayed/master/core.rb', line 19

def databases
  @databases
end

#job_checkerObject (readonly)

Returns the value of attribute job_checker.



20
21
22
# File 'lib/delayed/master/core.rb', line 20

def job_checker
  @job_checker
end

#job_listenerObject (readonly)

Returns the value of attribute job_listener.



20
21
22
# File 'lib/delayed/master/core.rb', line 20

def job_listener
  @job_listener
end

#loggerObject (readonly)

Returns the value of attribute logger.



19
20
21
# File 'lib/delayed/master/core.rb', line 19

def logger
  @logger
end

#monitoringObject (readonly)

Returns the value of attribute monitoring.



20
21
22
# File 'lib/delayed/master/core.rb', line 20

def monitoring
  @monitoring
end

#workersObject (readonly)

Returns the value of attribute workers.



19
20
21
# File 'lib/delayed/master/core.rb', line 19

def workers
  @workers
end

Instance Method Details

#graceful_stopObject



89
90
91
92
# File 'lib/delayed/master/core.rb', line 89

def graceful_stop
  @signaler.dispatch(:TERM)
  @stop = true
end

#prepared?Boolean

Returns:

  • (Boolean)


71
72
73
# File 'lib/delayed/master/core.rb', line 71

def prepared?
  @prepared
end

#quitObject



75
76
77
78
79
80
# File 'lib/delayed/master/core.rb', line 75

def quit
  @signaler.dispatch(:KILL)
  shutdown
  @workers.clear
  @stop = true
end

#reopen_filesObject



98
99
100
101
102
103
# File 'lib/delayed/master/core.rb', line 98

def reopen_files
  @signaler.dispatch(:USR1)
  @logger.info { "reopening files..." }
  FileReopener.reopen
  @logger.info { "reopened" }
end

#restartObject



105
106
107
108
109
# File 'lib/delayed/master/core.rb', line 105

def restart
  @signaler.dispatch(:USR2)
  @logger.info { "restarting master..." }
  exec(*([$0] + ARGV))
end

#runObject



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/delayed/master/core.rb', line 35

def run
  print_config
  daemonize if @config.daemon

  @logger.info { "started master #{Process.pid}".tap { |msg| puts msg } }

  handle_pid_file do
    @signaler.register
    @prepared = true

    start
    wait
    shutdown
  end

  @logger.info { "shut down master" }
end

#shutdownObject



65
66
67
68
69
# File 'lib/delayed/master/core.rb', line 65

def shutdown
  @job_checker.shutdown
  @job_listener.shutdown
  @monitoring.shutdown
end

#startObject



53
54
55
56
57
# File 'lib/delayed/master/core.rb', line 53

def start
  @job_checker.start
  @job_listener.start
  @monitoring.start
end

#stopObject



82
83
84
85
86
87
# File 'lib/delayed/master/core.rb', line 82

def stop
  @signaler.dispatch(:TERM)
  shutdown
  @workers.clear
  @stop = true
end

#stop?Boolean

Returns:

  • (Boolean)


94
95
96
# File 'lib/delayed/master/core.rb', line 94

def stop?
  @stop == true
end

#waitObject



59
60
61
62
63
# File 'lib/delayed/master/core.rb', line 59

def wait
  @job_checker.wait
  @job_listener.wait
  @monitoring.wait
end