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

[](name)
Alias for: lookup
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