Sha256: 249852f00e0534d1e8ef538f6e5c7ff720516e90eec098daa59c763064d2b437

Contents?: true

Size: 1.12 KB

Versions: 1

Compression:

Stored size: 1.12 KB

Contents

module DRbQS

  class ExecuteNode
    attr_reader :pid

    def initialize(uri, log_prefix, log_level, node_opts = {})
      @uri = uri
      @log_level = log_level
      if log_prefix
        @fname = FileName.new(log_prefix, :position => :suffix, :type => :time,
                              :add => :always, :directory => :parent,
                              :format => lambda { |t| t.strftime("%Y%m%d_%H%M_#{Process.pid}.log") })
      else
        @fname = nil
      end
      @pid = []
      @node_opts = node_opts
    end

    def get_log_file
      if @fname
        return @fname.create
      end
      return STDOUT
    end
    private :get_log_file

    def create_process
      @pid << fork do
        opts = @node_opts.merge({ :log_level => @log_level, :log_file => get_log_file })
        node = DRbQS::Node.new(@uri, opts)
        node.connect
        node.calculate
      end
    end
    private :create_process

    def execute(process_num, interval = 0)
      process_num.times do |i|
        create_process
        sleep(interval) if interval > 0
      end
    end

    def wait
      Process.waitall
    end
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
drbqs-0.0.15 lib/drbqs/manage/execute_node.rb