Class: Termworld::Daemon

Inherits:
Object
  • Object
show all
Defined in:
lib/termworld/daemon.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(status = nil) ⇒ Daemon

Returns a new instance of Daemon.



4
5
6
7
8
9
10
11
# File 'lib/termworld/daemon.rb', line 4

def initialize(status = nil)
  case status
  when :start
    @error_message = Utils::Color.reden "Already running" if alive?
  when :stop
    @error_message = Utils::Color.reden "Not running" unless alive?
  end
end

Instance Attribute Details

#error_messageObject (readonly)

Returns the value of attribute error_message.



3
4
5
# File 'lib/termworld/daemon.rb', line 3

def error_message
  @error_message
end

Instance Method Details

#alive?Boolean

Returns:

  • (Boolean)


27
28
29
# File 'lib/termworld/daemon.rb', line 27

def alive?
  @killed.nil? && daemon_file_exists && daemon_process_exists
end

#delete_filesObject



36
37
38
39
# File 'lib/termworld/daemon.rb', line 36

def delete_files
  File.delete(Termworld::DAEMON_FILE_NAME) if File.exists?(Termworld::DAEMON_FILE_NAME)
  File.delete(Termworld::DATABASE_NAME) if File.exists?(Termworld::DATABASE_NAME)
end

#prepareObject



13
14
15
16
17
18
19
20
21
# File 'lib/termworld/daemon.rb', line 13

def prepare
  delete_files
  [:INT, :TERM].each do |key|
    Signal.trap(key) {@killed = true}
  end
  DB.setup
  Process.setproctitle(Termworld::PROCESS_NAME)
  File.write(Termworld::DAEMON_FILE_NAME, nil)
end

#runObject



23
24
25
# File 'lib/termworld/daemon.rb', line 23

def run
  Process.daemon(true, false) # (nochdir, noclose)
end

#stopObject



31
32
33
34
# File 'lib/termworld/daemon.rb', line 31

def stop
  delete_files
  kill_daemon_process
end