class Blinker::ManticoreWrapper

Public Class Methods

new(config, context) click to toggle source
# File lib/blinkr/manticore_wrapper.rb, line 11
def initialize(config, context)
  @config = config.validate
  @client = Manticore::Client.new({:pool_max => (@config.maxconnects || 50),
                                   :pool_max_per_route => 10
                                  })
  @count = 0
  @context = context
end

Public Instance Methods

name() click to toggle source
# File lib/blinkr/manticore_wrapper.rb, line 31
def name
  'manticore'
end
process(url, limit, opts = {}, &block) click to toggle source
# File lib/blinkr/manticore_wrapper.rb, line 27
def process(url, limit, opts = {}, &block)
  _process url, limit, limit, opts, &block
end
process_all(urls, limit, opts = {}, &block) click to toggle source
# File lib/blinkr/manticore_wrapper.rb, line 20
def process_all(urls, limit, opts = {}, &block)
  urls.each do |url|
    process url, limit, opts, &block
  end
  @client.execute!
end

Private Instance Methods

_process(url, limit, max, opts = {}, &block) click to toggle source
# File lib/blinkr/manticore_wrapper.rb, line 37
def _process(url, limit, max, opts = {}, &block)
  unless @config.skipped? url
    resp = @client.async.get(url)
    resp.on_complete do |resp|
      if retry? resp
        if limit > 1
          puts "Loading #{url} via manticore (attempt #{max - limit + 2} of #{max})" if @config.verbose
          _process(url, limit - 1, max, &Proc.new)
        else
          puts "Loading #{url} via manticore failed" if @config.verbose
          response = @client.respond_with(:code => 0, :status_message => "Server timed out after #{max} retries",
                                          :body => '').get(url)
          block.call response, nil, nil
        end
      else
        block.call resp, nil, nil
      end
      @count += 1
    end
  end
end