Sha256: f7dfa60e8bbe5c997c54973ca3cd9f3a9f5b57c773801dfe4526c413068204a8

Contents?: true

Size: 771 Bytes

Versions: 1

Compression:

Stored size: 771 Bytes

Contents

class Indocker::BuildContextPool
  def initialize(configuration:, logger:)
    @logger = logger
    @configuration = configuration

    @contexts = configuration.build_servers.map do |build_server|
      Indocker::BuildContext.new(
        logger: @logger,
        configuration: configuration,
        build_server: build_server
      )
    end
  end

  def create_sessions!
    @contexts.each(&:create_session!)
  end

  def get
    context = nil

    loop do
      context = @contexts.detect {|c| !c.busy?}
      sleep(0.1)
      break if context
    end

    context
  end

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

  def close_sessions
    @contexts.each(&:close_session)
  rescue => e
    @logger.error("error during session close: #{e.inspect}")
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
indocker-0.1.11 lib/indocker/build_context_pool.rb