class Async::DNS::System::Hosts
This code is very experimental
Attributes
addresses[R]
names[R]
Public Class Methods
local()
click to toggle source
# File lib/async/dns/system.rb, line 87 def self.local hosts = self.new path = System::hosts_path if path and File.exist?(path) File.open(path) do |file| hosts.parse_hosts(file) end end return hosts end
new()
click to toggle source
# File lib/async/dns/system.rb, line 43 def initialize @addresses = {} @names = {} end
Public Instance Methods
add(address, names)
click to toggle source
# File lib/async/dns/system.rb, line 68 def add(address, names) @addresses[address] ||= [] @addresses[address] += names names.each do |name| @names[name] ||= [] @names[name] << address end end
call(name)
click to toggle source
This is used to match names against the list of known hosts:
# File lib/async/dns/system.rb, line 52 def call(name) @names.include?(name) end
lookup(name)
click to toggle source
# File lib/async/dns/system.rb, line 56 def lookup(name) addresses = @names[name] if addresses addresses.last else nil end end
Also aliased as: []
parse_hosts(io)
click to toggle source
# File lib/async/dns/system.rb, line 78 def parse_hosts(io) io.each do |line| line.sub!(/#.*/, '') address, hostname, *aliases = line.split(/\s+/) add(address, [hostname] + aliases) end end