Sha256: f4d38630717b8f1e18149c0e2339d22b16be709eee5886c824418104cbdf6825

Contents?: true

Size: 998 Bytes

Versions: 13

Compression:

Stored size: 998 Bytes

Contents

class Indocker::ServerPools::DeployServerPool
  def initialize(configuration:, logger:)
    @logger = logger
    @configuration = configuration
    @connections = []
    @semaphore = Mutex.new
  end

  def create_connection!(server)
    connection = Indocker::ServerPools::DeployServerConnection.new(
      logger: @logger,
      configuration: @configuration,
      server: server,
    )
    connection.create_session!
    connection
  end

  def find_or_create_connection!(server)
    @semaphore.synchronize do
      connection = @connections.detect do |connection|
        connection.server.host == server.host &&
        connection.server.port == server.port &&
        connection.server.user == server.user
      end
      if connection.nil?
        connection = create_connection!(server)
        @connections.push(connection)
      end
      connection
    end
  end

  def each(&proc)
    @connections.each(&proc)
  end

  def close_sessions
    @connections.each(&:close_session)
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
indocker-0.3.9 lib/indocker/server_pools/deploy_server_pool.rb
indocker-0.3.8 lib/indocker/server_pools/deploy_server_pool.rb
indocker-0.3.7 lib/indocker/server_pools/deploy_server_pool.rb
indocker-0.3.6 lib/indocker/server_pools/deploy_server_pool.rb
indocker-0.3.5 lib/indocker/server_pools/deploy_server_pool.rb
indocker-0.3.4 lib/indocker/server_pools/deploy_server_pool.rb
indocker-0.3.3 lib/indocker/server_pools/deploy_server_pool.rb
indocker-0.3.2 lib/indocker/server_pools/deploy_server_pool.rb
indocker-0.1.18 lib/indocker/server_pools/deploy_server_pool.rb
indocker-0.3.1 lib/indocker/server_pools/deploy_server_pool.rb
indocker-0.3.0 lib/indocker/server_pools/deploy_server_pool.rb
indocker-0.1.17 lib/indocker/server_pools/deploy_server_pool.rb
indocker-0.1.16 lib/indocker/server_pools/deploy_server_pool.rb