class Socket::HostnameResolutionStore
Constants
- PRIORITY_ON_V4
- PRIORITY_ON_V6
Public Class Methods
new
(family_names)
# File ext/socket/lib/socket.rb, line 1020 def initialize(family_names) @family_names = family_names @addrinfo_dict = {} @error_dict = {} @last_family = nil end
Public Instance Methods
add_error
(family_name, error)
# File ext/socket/lib/socket.rb, line 1031 def add_error(family_name, error) @addrinfo_dict[family_name] = [] @error_dict[family_name] = error end
add_resolved
(family_name, addrinfos)
# File ext/socket/lib/socket.rb, line 1027 def add_resolved(family_name, addrinfos) @addrinfo_dict[family_name] = addrinfos end
any_addrinfos?
()
# File ext/socket/lib/socket.rb, line 1058 def any_addrinfos? !empty_addrinfos? end
any_unresolved_family?
()
# File ext/socket/lib/socket.rb, line 1074 def any_unresolved_family? !resolved_all_families? end
empty_addrinfos?
()
# File ext/socket/lib/socket.rb, line 1054 def empty_addrinfos? @addrinfo_dict.all? { |_, addrinfos| addrinfos.empty? } end
get_addrinfo
()
# File ext/socket/lib/socket.rb, line 1036 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)
# File ext/socket/lib/socket.rb, line 1062 def resolved?(family) @addrinfo_dict.has_key? family end
resolved_all_families?
()
# File ext/socket/lib/socket.rb, line 1070 def resolved_all_families? (@family_names - @addrinfo_dict.keys).empty? end
resolved_successfully?
(family)
# File ext/socket/lib/socket.rb, line 1066 def resolved_successfully?(family) resolved?(family) && !!@error_dict[family] end