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