backendproxy.rb
Path: srv/backendproxy.rb
Modified: Sun Apr 06 11:50:25 MDT 2003
Required files
optparse    shellwords    util/config    util/logging    util/try    util/clientutils    xmlrpc/client   
Methods
main    start   
Classes and Modules
Class BProxyOpts
Included modules
Try Clientutils
Public Instance methods
main(opts, args)

Application starts here.

# File srv/backendproxy.rb, line 59
def main(opts, args)
  servname = opts["servname"]
  if servname.nil? || args.size != 1
    $stderr.puts("usage: #{APPNAME} -a name command|filename")
    return 1
  end

  log = Logging::init(APPNAME)

  proxy = get_client_for("player", servname)
  if proxy.nil?
    log.error { "server \"#{servname}\" not found" }
    $stderr.puts("#{APPNAME}: server \"#{servname}\" not found")
    return 1
  end

  trap("HUP") { exit(0) } # used internally
  trap("INT") { trycall(proxy.stop); exit(0) }
  trap("QUIT") { trycall(proxy.stop); exit(0) }
  trap("TERM") { trycall(proxy.stop); exit(0) }

  errhandler = proc { |s| log.error { s } }

  case args.first
  when "p","pause"
    trycall { proxy.pause }
  when "u","unpause"
    trycall { proxy.unpause }
  when ".","stop"
    trycall { proxy.stop }
  when "s","status"
    trycall { p proxy.status? }
  when "x","exit"
    log.info { "Daemon exit" }
    trycall { proxy.exit }
  else
    file = args.first
    if ! File.file?(file)
      log.error { "file \"#{file}\" not found" }
    else
      trycall { proxy.start(file, 0, $$) }
      begin
	sleep(60)
      end until trycall { proxy.poll? } != true
      log.error { "deadman poll? error" }
    end
  end
  return 0
end
start(av)

Parse command line and call main.

# File srv/backendproxy.rb, line 195
def start(av)
  opts = BProxyOpts.new(USAGE, BANNER)
  main(opts.vals, opts.parse(av))
end