class DRbQS::Manage::SendSignal

Constants

MAX_WAIT_TIME

Public Class Methods

new(message) click to toggle source
# File lib/drbqs/manage/send_signal.rb, line 6
def initialize(message)
  @message = message
end

Public Instance Methods

get_history() click to toggle source
# File lib/drbqs/manage/send_signal.rb, line 63
def get_history
  send_signal_to_server(:request_history, sender_id)
  if mes = wait_response([:history, String])
    return mes[1]
  end
  nil
end
get_response() click to toggle source
# File lib/drbqs/manage/send_signal.rb, line 71
def get_response
  send_signal_to_server(:request_response, [sender_id, Time.now])
  if mes = wait_response([:response, sender_id, nil])
    return true
  end
  nil
end
get_status() click to toggle source
# File lib/drbqs/manage/send_signal.rb, line 55
def get_status
  send_signal_to_server(:request_status, sender_id)
  if mes = wait_response([:status, String])
    return mes[1]
  end
  nil
end
send_data(data) click to toggle source
# File lib/drbqs/manage/send_signal.rb, line 35
def send_data(data)
  send_signal_to_server(:new_data, data)
end
send_exit_signal() click to toggle source
# File lib/drbqs/manage/send_signal.rb, line 19
def send_exit_signal
  send_signal_to_server(:exit_server, sender_id)
end
send_node_exit_after_task(node_id) click to toggle source
# File lib/drbqs/manage/send_signal.rb, line 23
def send_node_exit_after_task(node_id)
  send_signal_to_server(:exit_after_task, node_id)
end
send_node_sleep(node_id) click to toggle source
# File lib/drbqs/manage/send_signal.rb, line 31
def send_node_sleep(node_id)
  send_signal_to_server(:sleep_node, node_id)
end
send_node_wake(node_id) click to toggle source
# File lib/drbqs/manage/send_signal.rb, line 27
def send_node_wake(node_id)
  send_signal_to_server(:wake_node, node_id)
end
sender_id() click to toggle source
# File lib/drbqs/manage/send_signal.rb, line 10
def sender_id
  "#{Socket.gethostname}/#{Process.pid}"
end

Private Instance Methods

send_signal_to_server(signal, arg) click to toggle source
# File lib/drbqs/manage/send_signal.rb, line 14
def send_signal_to_server(signal, arg)
  @message.write([:server, signal, arg])
end
wait_response(message_cond) click to toggle source
# File lib/drbqs/manage/send_signal.rb, line 39
def wait_response(message_cond)
  i = 0
  loop do
    begin
      return @message.take(message_cond, 0)
    rescue Rinda::RequestExpiredError
      i += 1
      if i > MAX_WAIT_TIME
        return nil
      end
      sleep(1)
    end
  end
end