Class: Socket::HostnameResolutionStore
| Relationships & Source Files | |
| Inherits: | Object | 
| Defined in: | ext/socket/lib/socket.rb | 
Constant Summary
- 
    PRIORITY_ON_V4 =
    
 # File 'ext/socket/lib/socket.rb', line 1031[:ipv4, :ipv6].freeze 
- 
    PRIORITY_ON_V6 =
    
 # File 'ext/socket/lib/socket.rb', line 1030[:ipv6, :ipv4].freeze 
Class Method Summary
- .new(family_names) ⇒ HostnameResolutionStore constructor
Instance Attribute Summary
- #any_addrinfos? ⇒ Boolean readonly
- #any_unresolved_family? ⇒ Boolean readonly
- #empty_addrinfos? ⇒ Boolean readonly
- #resolved_all_families? ⇒ Boolean readonly
Instance Method Summary
Constructor Details
    .new(family_names)  ⇒ HostnameResolutionStore 
  
# File 'ext/socket/lib/socket.rb', line 1033
def initialize(family_names) @family_names = family_names @addrinfo_dict = {} @error_dict = {} @last_family = nil end
Instance Attribute Details
    #any_addrinfos?  ⇒ Boolean  (readonly)
  
  [ GitHub ]
# File 'ext/socket/lib/socket.rb', line 1071
def any_addrinfos? !empty_addrinfos? end
    #any_unresolved_family?  ⇒ Boolean  (readonly)
  
  [ GitHub ]
# File 'ext/socket/lib/socket.rb', line 1087
def any_unresolved_family? !resolved_all_families? end
    #empty_addrinfos?  ⇒ Boolean  (readonly)
  
  [ GitHub ]
# File 'ext/socket/lib/socket.rb', line 1067
def empty_addrinfos? @addrinfo_dict.all? { |_, addrinfos| addrinfos.empty? } end
    #resolved_all_families?  ⇒ Boolean  (readonly)
  
  [ GitHub ]
# File 'ext/socket/lib/socket.rb', line 1083
def resolved_all_families? (@family_names - @addrinfo_dict.keys).empty? end
Instance Method Details
#add_error(family_name, error)
[ GitHub ]# 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)
[ GitHub ]# File 'ext/socket/lib/socket.rb', line 1040
def add_resolved(family_name, addrinfos) @addrinfo_dict[family_name] = addrinfos end
#get_addrinfo
[ GitHub ]# 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)  ⇒ Boolean 
  
# File 'ext/socket/lib/socket.rb', line 1075
def resolved?(family) @addrinfo_dict.has_key? family end
    #resolved_successfully?(family)  ⇒ Boolean 
  
# File 'ext/socket/lib/socket.rb', line 1079
def resolved_successfully?(family) resolved?(family) && !@error_dict[family] end