Class: FreshConnection::ConnectionManager

Inherits:
AbstractConnectionManager show all
Defined in:
lib/fresh_connection/connection_manager.rb

Instance Attribute Summary

Attributes inherited from AbstractConnectionManager

#slave_group

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ ConnectionManager

Returns a new instance of ConnectionManager.



5
6
7
8
# File 'lib/fresh_connection/connection_manager.rb', line 5

def initialize(*args)
  super
  @connections = Concurrent::Map.new
end

Instance Method Details

#clear_all_connections!Object



22
23
24
25
26
27
# File 'lib/fresh_connection/connection_manager.rb', line 22

def clear_all_connections!
  @connections.each_value do |conn|
    conn.disconnect! rescue nil
  end
  @connections.clear
end

#put_aside!Object



16
17
18
19
20
# File 'lib/fresh_connection/connection_manager.rb', line 16

def put_aside!
  conn = @connections.delete(current_thread_id)
  return unless conn
  conn && conn.disconnect! rescue nil
end

#recovery?Boolean

Returns:



29
30
31
32
33
# File 'lib/fresh_connection/connection_manager.rb', line 29

def recovery?
  return false if slave_connection.active?
  put_aside!
  true
end

#slave_connectionObject



10
11
12
13
14
# File 'lib/fresh_connection/connection_manager.rb', line 10

def slave_connection
  @connections.fetch_or_store(current_thread_id) do |_|
    connection_factory.new_connection
  end
end