Files
codeocean/lib/port_pool.rb
2021-05-14 22:03:06 +02:00

19 lines
399 B
Ruby

# frozen_string_literal: true
class PortPool
PORT_RANGE = DockerClient.config[:ports]
@available_ports = PORT_RANGE.to_a
@mutex = Mutex.new
def self.available_port
@mutex.synchronize do
@available_ports.delete(@available_ports.sample)
end
end
def self.release(port)
@available_ports << port if PORT_RANGE.include?(port) && @available_ports.exclude?(port)
end
end