-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Caching DNS resolver library and mass DNS resolver utility
--
-- This library implements a caching, asynchronous DNS resolver and
-- provides a command line utility for mass DNS resolution.
@package dnscache
@version 1.0.2
-- | This module implements an asynchronous, caching DNS resolver.
module Network.DnsCache
-- | DNS cache configuration.
data DnsCache
-- | Start a DNS cache with the given number of resolver threads and the
-- given cache timeout.
createDnsCache :: MonadIO m => Int -> NominalDiffTime -> m DnsCache
-- | Free existing DNS cache.
freeDnsCache :: MonadIO m => DnsCache -> m ()
-- | Convenient wrapper around createDnsCache and
-- freeDnsCache.
withDnsCache :: (HasExceptions m, MonadIO m) => Int -> NominalDiffTime -> (DnsCache -> m a) -> m a
-- | Monads, which contain a DNS cache.
class MonadIO m => DnsMonad m
getDnsCache :: DnsMonad m => m DnsCache
-- | Run a StateT computation with a DNS cache.
withDnsStateT :: (Applicative m, HasExceptions m, MonadIO m) => Int -> NominalDiffTime -> StateT a DnsCache m a -> m a
-- | Resolve an A record.
resolveA :: DnsMonad m => Domain -> m (Maybe [IPv4])
-- | Resolve an AAAA record.
resolveAAAA :: DnsMonad m => Domain -> m (Maybe [IPv6])
-- | Resolve an MX record.
resolveMX :: DnsMonad m => Domain -> m (Maybe [Domain])
-- | Result of a mass lookup.
data MassResult
MassResult :: Domain -> [IPv4] -> [IPv6] -> [Domain] -> MassResult
massDomain :: MassResult -> Domain
massA :: MassResult -> [IPv4]
massAAAA :: MassResult -> [IPv6]
massMX :: MassResult -> [Domain]
-- | The type of resources to look up.
data MassType
MassA :: MassType
MassAAAA :: MassType
MassMX :: MassType
MassAll :: MassType
-- | Perform a mass lookup.
massLookup :: DnsMonad m => MassType -> [Domain] -> m (Map Domain MassResult)
-- | Perform a mass lookup with report function.
massLookupReport :: DnsMonad m => MassType -> [Domain] -> (MassResult -> m ()) -> m ()
-- | Type for domain.
type Domain = String
instance Show MassResult
instance DnsMonad IO
instance MonadIO m => DnsMonad (StateT r DnsCache m)