class DRbQS::Setting::Execute

Attributes

server_argument[RW]

Public Class Methods

new() click to toggle source
Calls superclass method DRbQS::Setting::Base::new
# File lib/drbqs/setting/execute.rb, line 8
def initialize
  super(:all_keys_defined => true) do
    [:port, :server, :node].each do |key|
      register_key(key, :check => 1)
    end
    [:no_server, :no_node, :wait_server_finish, :information, :help].each do |key|
      register_key(key, :bool => true)
    end
    set_argument_condition(:<=, 1)
  end
  @server_argument = []
end

Public Instance Methods

exec(io = nil) click to toggle source
# File lib/drbqs/setting/execute.rb, line 52
def exec(io = nil)
  process_def = DRbQS::ProcessDefinition.new(@server, @node, @port, io)
  if @definition
    process_def.load(@definition)
    process_def.test_consistency
  end
  case @mode
  when :help
    io.puts process_def.usage if io
  when :information
    io.puts process_def.information_string if io
  else
    unless @no_server
      process_def.execute_server(@server_argument)
    end
    unless @no_node
      process_def.execute_node
    end
    if !@no_server && @wait_server_finish
      process_def.wait_server_finish
    end
  end
  true
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/execute.rb, line 23
def parse!
  super
  @port = get_first(:port) do |val|
    val.to_i
  end
  @no_server = set?(:no_server)
  @server = get_first(:server) do |val|
    val.intern
  end
  @no_node = set?(:no_node)
  @node = get_first(:node) do |val|
    val.split(',').map do |s|
      s.intern
    end
  end
  @definition = get_argument[0]
  if get_first(:help)
    @mode = :help
  elsif get_first(:information)
    @mode = :information
  else
    @mode = nil
  end
  @wait_server_finish = set?(:wait_server_finish)
  if @mode != :help && !@definition
    raise DRbQS::Setting::InvalidArgument, "Definition file must be specified."
  end
end