class SocketLabs::InjectionApi::RetrySettings

Attributes

default_number_of_retries[RW]
maximum_allowed_number_of_retries[RW]
maximum_number_of_retries[RW]
maximum_retry_time[RW]
minimum_retry_time[RW]

Public Class Methods

new(maximum_retries=nil) click to toggle source
# File lib/socketlabs/injectionapi/retrysettings.rb, line 16
def initialize(maximum_retries=nil)

    @default_number_of_retries = 0
    @maximum_allowed_number_of_retries = 5
    @minimum_retry_time = 1
    @maximum_retry_time = 10

    unless maximum_retries.nil?
        
        if maximum_retries < 0
            raise ArgumentError.new "maximum_number_of_retries must be greater than 0"
        end
        
        if maximum_retries > @maximum_allowed_number_of_retries
            raise ArgumentError.new "The maximum number of allowed retries is " + @maximum_allowed_number_of_retries
        end

        @maximum_number_of_retries = maximum_retries

    else
        @maximum_number_of_retries = @default_number_of_retries
    end

end

Public Instance Methods

get_next_wait_interval(number_of_attempts) click to toggle source
# File lib/socketlabs/injectionapi/retrysettings.rb, line 41
def get_next_wait_interval(number_of_attempts)

    interval = [@minimum_retry_time * 1000 + get_retry_delta(number_of_attempts), @maximum_retry_time * 1000].min
    interval
    
end
get_retry_delta(number_of_attempts) click to toggle source
# File lib/socketlabs/injectionapi/retrysettings.rb, line 48
def get_retry_delta(number_of_attempts)
    
    random = Random.new

    min = (1 * 1000 * 0.8).to_i
    max = (1 * 1000 * 1.2).to_i

    (((2.0 ** number_of_attempts) - 1.0) * random.rand(min..max)).to_i

end