module RSence::SIGComm

@private RSence async signal communication handler, uses temporary files for communication.

Utilized by ARGVParser and Daemon.

Public Class Methods

delete_signal_response( pid_fn ) click to toggle source
# File lib/rsence/sigcomm.rb, line 16
def self.delete_signal_response( pid_fn )
  sig_fn = pid_fn+'.response.'+signal
  if File.file?( sig_fn )
    File.delete( sig_fn )
  end
end
wait_signal_response( pid, pid_fn, signal, timeout = 10, debug_pre = false, debug_suf = false, sleep_secs = 0.2, verbose=nil ) click to toggle source
# File lib/rsence/sigcomm.rb, line 28
def self.wait_signal_response( pid, pid_fn, signal, timeout = 10,
                               debug_pre = false, debug_suf = false,
                               sleep_secs = 0.2, verbose=nil )
  sig_fn = pid_fn+'.response.'+signal
  verbose = RSence.args[:verbose] if verbose == nil
  begin
    if verbose and debug_pre
      print debug_pre
    end
    File.delete( sig_fn ) if File.exists?( sig_fn )
    status = Process.kill( signal, pid )
    time_out = Time.now + timeout
    until (time_out < Time.now) or File.exists?( sig_fn )
      if verbose
        print "."
        STDOUT.flush
      end
      sleep sleep_secs
    end
    if File.file?( sig_fn )
      sig_pid = File.read( sig_fn ).to_i
      if sig_pid != pid
        puts "Warning, signal PID mismatch. Expected #{pid}, got #{sig_pid}"
      end
      File.delete( sig_fn )
    else
      puts "Warning, signal response file disappeared! Expected #{sig_fn}"
    end
    puts debug_suf if verbose and debug_suf
    return true
  rescue Errno::ESRCH
    return false
  end
end
write_signal_response( pid, pid_fn, signal ) click to toggle source
# File lib/rsence/sigcomm.rb, line 22
def self.write_signal_response( pid, pid_fn, signal )
  sig_fn = pid_fn+'.response.'+signal
  File.open(sig_fn,'w') do |file|
    file.write( pid.to_s )
  end
end