class Socket::HostnameResolutionStore
Constants
- PRIORITY_ON_V4
- PRIORITY_ON_V6
Public Class Methods
Source
# File ext/socket/lib/socket.rb, line 1045 def initialize(family_names) @family_names = family_names @addrinfo_dict = {} @error_dict = {} @last_family = nil end
Public Instance Methods
Source
# File ext/socket/lib/socket.rb, line 1056 def add_error(family_name, error) @addrinfo_dict[family_name] = [] @error_dict[family_name] = error end
Source
# File ext/socket/lib/socket.rb, line 1052 def add_resolved(family_name, addrinfos) @addrinfo_dict[family_name] = addrinfos end
Source
# File ext/socket/lib/socket.rb, line 1083 def any_addrinfos? !empty_addrinfos? end
Source
# File ext/socket/lib/socket.rb, line 1099 def any_unresolved_family? !resolved_all_families? end
Source
# File ext/socket/lib/socket.rb, line 1079 def empty_addrinfos? @addrinfo_dict.all? { |_, addrinfos| addrinfos.empty? } end
Source
# File ext/socket/lib/socket.rb, line 1061 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
Source
# File ext/socket/lib/socket.rb, line 1087 def resolved?(family) @addrinfo_dict.has_key? family end
Source
# File ext/socket/lib/socket.rb, line 1095 def resolved_all_families? (@family_names - @addrinfo_dict.keys).empty? end
Source
# File ext/socket/lib/socket.rb, line 1091 def resolved_successfully?(family) resolved?(family) && !!@error_dict[family] end