class Socket::HostnameResolutionStore
Constants
- PRIORITY_ON_V4
- PRIORITY_ON_V6
Public Class Methods
new(family_names)
click to toggle source
# File ext/socket/lib/socket.rb, line 1018 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 ext/socket/lib/socket.rb, line 1029 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 ext/socket/lib/socket.rb, line 1025 def add_resolved(family_name, addrinfos) @addrinfo_dict[family_name] = addrinfos end
any_addrinfos?()
click to toggle source
# File ext/socket/lib/socket.rb, line 1056 def any_addrinfos? !empty_addrinfos? end
any_unresolved_family?()
click to toggle source
# File ext/socket/lib/socket.rb, line 1072 def any_unresolved_family? !resolved_all_families? end
empty_addrinfos?()
click to toggle source
# File ext/socket/lib/socket.rb, line 1052 def empty_addrinfos? @addrinfo_dict.all? { |_, addrinfos| addrinfos.empty? } end
get_addrinfo()
click to toggle source
# File ext/socket/lib/socket.rb, line 1034 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 ext/socket/lib/socket.rb, line 1060 def resolved?(family) @addrinfo_dict.has_key? family end
resolved_all_families?()
click to toggle source
# File ext/socket/lib/socket.rb, line 1068 def resolved_all_families? (@family_names - @addrinfo_dict.keys).empty? end
resolved_successfully?(family)
click to toggle source
# File ext/socket/lib/socket.rb, line 1064 def resolved_successfully?(family) resolved?(family) && !!@error_dict[family] end