Sha256: b3ed12ee4c60eef30baf0bc2c1bab048d465e078818ae6ad2525939cec5cd0e7
Contents?: true
Size: 1 KB
Versions: 1
Compression:
Stored size: 1 KB
Contents
require 'concurrent' require 'fresh_connection/abstract_connection_manager' require 'fresh_connection/connection_factory' module FreshConnection class ConnectionManager < AbstractConnectionManager def initialize(*args) super @connections = Concurrent::Map.new end def slave_connection @connections.fetch_or_store(current_thread_id) do |_| connection_factory.new_connection end end def put_aside! conn = @connections.delete(current_thread_id) return unless conn conn && conn.disconnect! rescue nil end def clear_all_connections! @connections.each_value do |conn| conn.disconnect! rescue nil end @connections.clear end def recovery? return false if slave_connection.active? put_aside! true end private def connection_factory @connection_factory ||= ConnectionFactory.new(@slave_group) end def current_thread_id Thread.current.object_id end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
fresh_connection-2.2.0 | lib/fresh_connection/connection_manager.rb |