# class Socket::HostnameResolutionStore

### Constants

PRIORITY_ON_V4
PRIORITY_ON_V6

### Public Class Methods

new (family_names)
Source

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

### Public Instance Methods

add_error (family_name, error)
Source

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

add_resolved (family_name, addrinfos)
Source

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

any_addrinfos? ()
Source

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

any_unresolved_family? ()
Source

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

empty_addrinfos? ()
Source

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

get_addrinfo ()
Source

    # File ext/socket/lib/socket.rb, line 1043
    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)
Source

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

resolved_all_families? ()
Source

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

resolved_successfully? (family)
Source

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