class DRbQS::Setting::Manage

Public Class Methods

new() click to toggle source
Calls superclass method DRbQS::Setting::Base::new
# File lib/drbqs/setting/manage.rb, line 6
def initialize
  super(:all_keys_defined => true) do
    set_argument_condition(:>, 0)
  end
end

Public Instance Methods

exec(io = nil) click to toggle source
# File lib/drbqs/setting/manage.rb, line 144
def exec(io = nil)
  @manage = DRbQS::Manage.new
  case @mode
  when 'initialize'
    command_initialize
  when 'process'
    command_process(io)
  when 'status'
    command_status(io)
  when 'history'
    command_history(io)
  when 'signal'
    command_signal
  when 'send'
    command_send
  end
end
parse!() click to toggle source

If there are invalid arguments, this method raises an error.

Calls superclass method DRbQS::Setting::Base#parse!
# File lib/drbqs/setting/manage.rb, line 54
def parse!
  super
  ary = get_argument
  @mode = ary[0].to_s
  @argv = ary[1..-1]
  check_all_arguments
end

Private Instance Methods

check_all_arguments() click to toggle source
# File lib/drbqs/setting/manage.rb, line 12
def check_all_arguments
  case @mode
  when 'initialize'
    check_argument_size(@argv, :>=, 0, :<=, 1)
  when 'process'
    check_argument_size(@argv, :>=, 0, :<=, 1)
    if @argv[0] && !['clear', 'list'].include?(@argv[0])
      raise DRbQS::Setting::InvalidArgument, "Invalid command 'process #{@argv[0]}'"
    end
  when 'status', 'history'
    check_argument_size(@argv, :==, 1)
  when 'signal'
    case @argv[1]
    when 'server-exit'
      check_argument_size(@argv, :==, 2)
    when 'node-exit-after-task', 'node-wake', 'node-sleep'
      check_argument_size(@argv, :==, 3)
    else
      raise DRbQS::Setting::InvalidArgument, "Invalid signal type '#{@argv[1]}'"
    end
  when 'send'
    check_argument_size(@argv, :==, 3)
    case @argv[0]
    when 'string'
      unless @argv[2]
        raise DRbQS::Setting::InvalidArgument, "String data is not set"
      end
    when 'file'
      unless File.exist?(@argv[2])
        raise DRbQS::Setting::InvalidArgument, "File '#{@argv[2]}' does not exist"
      end
    else
      raise DRbQS::Setting::InvalidArgument, "Invalid option '#{argv[2]}' for 'send'"
    end
  else
    raise DRbQS::Setting::InvalidArgument, "Invalid command '#{@mode}'"
  end
end
command_history(io) click to toggle source
# File lib/drbqs/setting/manage.rb, line 106
def command_history(io)
  request_to_server(io, :get_history)
end
command_initialize() click to toggle source
# File lib/drbqs/setting/manage.rb, line 62
def command_initialize
  @manage.set_home_directory(@argv[0])
  @manage.create_config
end
command_process(io) click to toggle source
# File lib/drbqs/setting/manage.rb, line 68
def command_process(io)
  if @argv[0] == 'clear'
    @manage.clear_process
    return true
  end
  result = ''
  list = @manage.list_process
  result << "Server\n"
  list[:server].each do |uri, data|
    result << "#{uri}\n"
    data.each do |k, v|
      result << sprintf("  %-10s  %s\n", k, v)
    end
  end
  result << "\nNode\n"
  list[:node].each do |pid, data|
    result << "#{pid}\n"
    data.each do |k, v|
      result << sprintf("  %-10s  %s\n", k, v)
    end
  end
  io.print result if io
end
command_send() click to toggle source
# File lib/drbqs/setting/manage.rb, line 132
def command_send
  @manage.set_uri(@argv[1])
  case @argv[0]
  when 'string'
    data = @argv[2]
  when 'file'
    data = File.read(@argv[2])
  end
  @manage.send_data(data)
end
command_signal() click to toggle source
# File lib/drbqs/setting/manage.rb, line 117
def command_signal
  @manage.set_uri(@argv[0])
  case @argv[1]
  when 'server-exit'
    @manage.send_exit_signal
  when 'node-exit-after-task'
    signal_to_node(:send_node_exit_after_task)
  when 'node-wake'
    signal_to_node(:send_node_wake)
  when 'node-sleep'
    signal_to_node(:send_node_sleep)
  end
end
command_status(io) click to toggle source
# File lib/drbqs/setting/manage.rb, line 101
def command_status(io)
  request_to_server(io, :get_status)
end
request_to_server(io, method_name) click to toggle source
# File lib/drbqs/setting/manage.rb, line 93
def request_to_server(io, method_name)
  @manage.set_uri(@argv[0])
  if status = @manage.__send__(method_name)
    io.puts status if io
  end
end
signal_to_node(method_name) click to toggle source
# File lib/drbqs/setting/manage.rb, line 111
def signal_to_node(method_name)
  node_id = @argv[2].to_i
  @manage.__send__(method_name, node_id)
end