class Socket::HostnameResolutionStore - socket: Ruby Standard Library Documentation

# class Socket::HostnameResolutionStore

### Constants

PRIORITY_ON_V4
PRIORITY_ON_V6

### Public Class Methods

new(family_names) click to toggle source

    # File socket/lib/socket.rb, line 1024
    def initialize(family_names)
      @family_names = family_names
      @addrinfo_dict = {}
      @error_dict = {}
      @last_family = nil
    end

### Public Instance Methods

add_error(family_name, error) click to toggle source

    # File socket/lib/socket.rb, line 1035
    def add_error(family_name, error)
      @addrinfo_dict[family_name] = []
      @error_dict[family_name] = error
    end

add_resolved(family_name, addrinfos) click to toggle source

    # File socket/lib/socket.rb, line 1031
    def add_resolved(family_name, addrinfos)
      @addrinfo_dict[family_name] = addrinfos
    end

any_addrinfos?() click to toggle source

    # File socket/lib/socket.rb, line 1062
    def any_addrinfos?
      !empty_addrinfos?
    end

any_unresolved_family?() click to toggle source

    # File socket/lib/socket.rb, line 1078
    def any_unresolved_family?
      !resolved_all_families?
    end

empty_addrinfos?() click to toggle source

    # File socket/lib/socket.rb, line 1058
    def empty_addrinfos?
      @addrinfo_dict.all? { |_, addrinfos| addrinfos.empty? }
    end

get_addrinfo() click to toggle source

    # File socket/lib/socket.rb, line 1040
    def get_addrinfo
      precedences =
        case @last_family
        when :ipv4, nil then PRIORITY_ON_V6
        when :ipv6      then PRIORITY_ON_V4
        end

      precedences.each do |family_name|
        addrinfo = @addrinfo_dict[family_name]&.shift
        next unless addrinfo

        @last_family = family_name
        return addrinfo
      end

      nil
    end

resolved?(family) click to toggle source

    # File socket/lib/socket.rb, line 1066
    def resolved?(family)
      @addrinfo_dict.has_key? family
    end

resolved_all_families?() click to toggle source

    # File socket/lib/socket.rb, line 1074
    def resolved_all_families?
      (@family_names - @addrinfo_dict.keys).empty?
    end

resolved_successfully?(family) click to toggle source

    # File socket/lib/socket.rb, line 1070
    def resolved_successfully?(family)
      resolved?(family) && !!@error_dict[family]
    end