Class: EventMachine::Twitter::Reconnectors::NetworkFailure

Inherits:
Object
  • Object
show all
Defined in:
lib/em-twitter/reconnectors/network_failure.rb

Constant Summary collapse

START =
0.25
INCREMENTOR =
0.25
MAX_RECONNECTS =
10
DEFAULT_RECONNECT =
0
MAX_TIMEOUT =
16

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ NetworkFailure

Returns a new instance of NetworkFailure.



16
17
18
19
# File 'lib/em-twitter/reconnectors/network_failure.rb', line 16

def initialize(options = {})
  @reconnect_timeout  = options.delete(:reconnect_timeout) || START
  @reconnect_count    = options.delete(:reconnect_count) || DEFAULT_RECONNECT
end

Instance Attribute Details

#reconnect_countObject (readonly)

Returns the value of attribute reconnect_count.



13
14
15
# File 'lib/em-twitter/reconnectors/network_failure.rb', line 13

def reconnect_count
  @reconnect_count
end

#reconnect_timeoutObject



21
22
23
# File 'lib/em-twitter/reconnectors/network_failure.rb', line 21

def reconnect_timeout
  [@reconnect_timeout, MAX_TIMEOUT].min
end

Instance Method Details

#increment {|@reconnect_timeout| ... } ⇒ Object

Yields:



25
26
27
28
29
30
31
32
33
34
# File 'lib/em-twitter/reconnectors/network_failure.rb', line 25

def increment
  if maximum_reconnects?
    raise EM::Twitter::ReconnectLimitError.new("#{@reconnect_count} Reconnects")
  end

  yield @reconnect_timeout if block_given?

  @reconnect_count += 1
  @reconnect_timeout += INCREMENTOR
end

#resetObject



36
37
38
39
# File 'lib/em-twitter/reconnectors/network_failure.rb', line 36

def reset
  @reconnect_timeout  = START
  @reconnect_count    = DEFAULT_RECONNECT
end