class Invoker::Power::PortFinder

Constants

STARTING_PORT

Attributes

dns_port[RW]
http_port[RW]
https_port[RW]
starting_port[RW]

Public Class Methods

new() click to toggle source
# File lib/invoker/power/port_finder.rb, line 6
def initialize
  @starting_port = STARTING_PORT
  @ports = []
  @dns_port = nil
  @http_port = nil
end

Public Instance Methods

find_ports() click to toggle source
# File lib/invoker/power/port_finder.rb, line 13
def find_ports
  STARTING_PORT.upto(STARTING_PORT + 100) do |port|
    break if @ports.size > 3
    if check_if_port_is_open(port)
      @ports << port
    else
      next
    end
  end
  @dns_port = @ports[0]
  @http_port = @ports[1]
  @https_port = @ports[2]
end

Private Instance Methods

check_if_port_is_open(port) click to toggle source
# File lib/invoker/power/port_finder.rb, line 29
def check_if_port_is_open(port)
  socket_flag = true
  sockets = nil
  begin
    sockets = Socket.tcp_server_sockets(port)
    socket_flag = false if sockets.size <= 1
  rescue Errno::EADDRINUSE
    socket_flag = false
  end
  sockets && close_socket_pairs(sockets)
  socket_flag
end
close_socket_pairs(sockets) click to toggle source
# File lib/invoker/power/port_finder.rb, line 42
def close_socket_pairs(sockets)
  sockets.each { |s| s.close }
rescue
  nil
end