class Socket::HostnameResolutionStore - Documentation for Ruby 3.4
Description: Documentation for the Socket::HostnameResolutionStore class
Keywords: ruby,class,Socket::HostnameResolutionStore

# class Socket::HostnameResolutionStore

### Constants

PRIORITY_ON_V4
PRIORITY_ON_V6

### Public Class Methods

new (family_names)
Source

    # File ext/socket/lib/socket.rb, line 1033
    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 1044
    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 1040
    def add_resolved(family_name, addrinfos)
      @addrinfo_dict[family_name] = addrinfos
    end

any_addrinfos? ()
Source

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

any_unresolved_family? ()
Source

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

empty_addrinfos? ()
Source

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

get_addrinfo ()
Source

    # File ext/socket/lib/socket.rb, line 1049
    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 1075
    def resolved?(family)
      @addrinfo_dict.has_key? family
    end

resolved_all_families? ()
Source

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

resolved_successfully? (family)
Source

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