class XRBP::WebClient::Plugins::AutoRetry

Plugin to automatically retry WebClient Connection requests multiple times.

If no max_tries are specified, requests will be tried indefinitely. Optionally configured interval to wait between retries.

@example retrying request:

connection = WebClient::Connection.new
connection.add_plugin :autoretry

connection.max_tries = 3
connection.interval  = 1
connection.timeout   = 1

connection.url = "http://doesnt.exist"
connection.perform

Attributes

interval[RW]
max_tries[RW]

Public Class Methods

new(connection) click to toggle source
Calls superclass method XRBP::PluginBase::new
# File lib/xrbp/webclient/plugins/autoretry.rb, line 23
def initialize(connection)
  super(connection)
  @interval   = 3
  @max_tries  = nil
  @retry_num  = 0
end

Public Instance Methods

added() click to toggle source
# File lib/xrbp/webclient/plugins/autoretry.rb, line 30
def added
  plugin = self
  connection.define_instance_method(:retry_interval=) do |i|
    plugin.interval = i
  end

  connection.define_instance_method(:max_retries=) do |i|
    plugin.max_tries = i
  end
end
handle_error() click to toggle source
# File lib/xrbp/webclient/plugins/autoretry.rb, line 41
def handle_error
  @retry_num += 1
  return nil if connection.force_quit? ||
                (!@max_tries.nil? && @retry_num > @max_tries)

  connection.rsleep(@interval)
  connection.perform
end