class Session::IDL

IDL => interactive data language - see www.rsinc.com/

def clear

def clear
  stdin.puts "retall"
  stdin.puts "printf, -2, '__clear__'"
  stdin.puts "printf, -1, '__clear__'"
  stdin.flush
  while((line = stderr.gets) and line !~ %r/__clear__/o)
    raise LicenseManagerError, line if line =~ %r/license\s*manager/io
  end
  while((line = stdout.gets) and line !~ %r/__clear__/o)
    raise LicenseManagerError, line if line =~ %r/license\s*manager/io
  end
  self
end

def initialize(*args)

def initialize(*args)
  tries = 0 
  ret = nil
  begin
    ret = super
  rescue LicenseManagerError => e
    tries += 1 
    if tries < MAX_TRIES
      sleep 1
      retry
    else
      raise LicenseManagerError, "<#{ MAX_TRIES }> attempts <#{ e.message }>"
    end
  end
  ret
end

def path

def path 
  stdout, stderr = execute "print, !path"
  stdout.strip.split %r/:/o
end

def path= arg

def path= arg 
  case arg
    when Array
      arg = arg.join ':'
    else
      arg = arg.to_s.strip
  end
  stdout, stderr = execute "!path='#{ arg }'"
  self.path
end

def send_command cmd

def send_command cmd
  stdin.printf "printf, -2, '%s'\n", cmd.begin_err
  stdin.printf "printf, -1, '%s'\n", cmd.begin_out
  stdin.printf "%s\n", cmd.cmd
  stdin.printf "retall\n"
  stdin.printf "printf, -2, '%s'\n", cmd.end_err
  stdin.printf "printf, -1, '%s'\n", cmd.end_out
  stdin.flush
end