Module: Net::EmptyPort

Defined in:
lib/net/empty_port.rb,
lib/net/empty_port/version.rb

Constant Summary collapse

VERSION =
"0.0.2"

Class Method Summary collapse

Class Method Details

.empty_port(port = 0, proto = :tcp) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/net/empty_port.rb', line 7

def empty_port(port = 0, proto = :tcp)
  port  = random_port unless valid_port?(port)

  while (port += 1) < 60000
    next if (proto == :tcp and used?(port))

    begin
      TCPServer.new('127.0.0.1', port).close
      return port
    rescue Errno::EADDRINUSE, Errno::EACCES
    end
  end
end

.used?(port, proto = :tcp) ⇒ Boolean

Returns:

  • (Boolean)


21
22
23
24
25
26
27
# File 'lib/net/empty_port.rb', line 21

def used?(port, proto = :tcp)
  if proto == :udp
    udp_used?(port)
  else
    tcp_used?(port)
  end
end

.wait(port, max_wait, proto = :tcp) ⇒ Object



29
30
31
32
33
34
35
# File 'lib/net/empty_port.rb', line 29

def wait(port, max_wait, proto = :tcp)
  waiter = make_waiter(max_wait)
  while waiter.call
    return true if used?(port, proto)
  end
  return false
end