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
- .empty_port(port = 0, proto = :tcp) ⇒ Object
- .used?(port, proto = :tcp) ⇒ Boolean
- .wait(port, max_wait, proto = :tcp) ⇒ Object
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
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 |