Sha256: 66912dd8cd47f3928d3b1048a8c2120d2bba7ff4917af5f967d9f65d2f4f2fb2

Contents?: true

Size: 852 Bytes

Versions: 2

Compression:

Stored size: 852 Bytes

Contents

module ProconBypassMan::Background::HasServerPool
  class ServerPool
    def initialize(servers: )
      if servers.nil? || servers.empty?
        return
      end

      @servers = servers
      if @servers.size >= 1
        @index = 0
      else
        @index = nil
      end
    end

    def pick
      if @index.nil?
        return @servers&.first
      end
      @servers[@index] or raise "bug!!!"
    end
    def server; pick; end

    def next!
      inc_index
      if @servers[@index].nil?
        reset
        return
      end
    end

    def reset
      @index = 0
    end

    def inc_index
      @index = @index + 1
    end
  end

  def reset_server_pool!
    @pool_server = nil
  end

  def pool_server
    @pool_server ||= ServerPool.new(
      servers: servers
    )
  end

  def servers
    raise NotImplementedError, nil
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
procon_bypass_man-0.1.13 lib/procon_bypass_man/background/has_server_pool.rb
procon_bypass_man-0.1.12 lib/procon_bypass_man/background/has_server_pool.rb