class StatSailrController

Constants

INITIAL_BLOCK_COUNTER

Public Class Methods

init( working_dir: nil, device_info: nil, **kwargs ) click to toggle source
# File lib/statsailr/sts_controller.rb, line 13
def self.init( working_dir: nil, device_info: nil, **kwargs )
  if ! device_info.nil?
    # This parameter should be something like ["Gtk3", <FFI::Pointer>]
    raise "device_info parameter needs to be an Array" unless device_info.is_a? Array
    raise "device_info parameter needs to be size 2" unless device_info.size == 2
    raise "device_info parameter requires String for its first element" unless device_info[0].is_a? String
    raise "device_info parameter requires FFI::Pointer to GtkWidget for its second element" unless device_info[1].is_a? FFI::Pointer
  end

  if working_dir.nil?
    working_dir = File.expand_path('~')
  end

  @output_mngr = StatSailr::Output::OutputManager.new(capture: true)

  num_executed = 0
  num_executed = StatSailr.build_exec( " ", initR_beforeExec: true, endR_afterExec: false,
                                      block_idx_start: @block_counter, set_working_dir: working_dir, device_info: device_info,
                                      output_mngr: @output_mngr,
                                      **kwargs  )
  @block_counter = num_executed + @block_counter
  return @output_mngr.to_s
end
run(script) click to toggle source
# File lib/statsailr/sts_controller.rb, line 37
def self.run(script)
  begin
    num_executed = 0
    output = ""
    num_executed = StatSailr.build_exec( script, initR_beforeExec: false, endR_afterExec: false,
                                        block_idx_start: @block_counter, output_mngr: @output_mngr.reset  )
  rescue RuntimeError => e
    print e.backtrace.map.with_index{|elem, idx| idx.to_s + " " + elem }.reverse.join("\n")
    puts "  \e[1m#{e.message}\e[22m"  # show in bold
    output << "Error\n"
    output << "\n" << e.message << "\n\n" # output error for user
    # ToDo, obtain num_executed before error rased.
    num_executed = e.block_num_executed
  ensure
    output << @output_mngr.to_s
    @block_counter = num_executed + @block_counter
    script = ""
  end

  return output
end
stop() click to toggle source
# File lib/statsailr/sts_controller.rb, line 59
def self.stop
  StatSailr.build_exec( " ", initR_beforeExec: false, endR_afterExec: true , block_idx_start: @block_counter, output_mngr: @output_mngr.reset )
  output = @output_mngr.to_s
  return output
end