Class: FreshConnection::ConnectionManager

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

Instance Attribute Summary

Attributes inherited from AbstractConnectionManager

#replica_group

Instance Method Summary collapse

Methods inherited from AbstractConnectionManager

method_added, #slave_group

Constructor Details

#initialize(*args) ⇒ ConnectionManager

Returns a new instance of ConnectionManager.



7
8
9
10
# File 'lib/fresh_connection/connection_manager.rb', line 7

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

Instance Method Details

#clear_all_connections!Object



24
25
26
27
28
29
# File 'lib/fresh_connection/connection_manager.rb', line 24

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

#put_aside!Object



18
19
20
21
22
# File 'lib/fresh_connection/connection_manager.rb', line 18

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

#recovery?Boolean

Returns:

  • (Boolean)


31
32
33
34
35
# File 'lib/fresh_connection/connection_manager.rb', line 31

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

#replica_connectionObject



12
13
14
15
16
# File 'lib/fresh_connection/connection_manager.rb', line 12

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