]> gitweb @ CieloNegro.org - haskell-dns.git/blob - Network/DNS/Named/Zone.hs
Response builder
[haskell-dns.git] / Network / DNS / Named / Zone.hs
1 module Network.DNS.Named.Zone
2     ( Zone(..)
3     , ZoneFinder(..)
4
5     , defaultRootZone
6     )
7     where
8
9 import Data.Maybe
10 import Network.DNS.Message
11 import Network.DNS.Named.Responder
12
13
14 data Zone
15     = Zone {
16         zoneName       :: !DomainName
17       , zoneResponders :: ![SomeResponder]
18       }
19
20 class ZoneFinder a where
21     findZone :: a -> DomainName -> IO Zone
22
23 instance ZoneFinder (DomainName -> Zone) where
24     findZone = (return .)
25
26 instance ZoneFinder (DomainName -> IO Zone) where
27     findZone = id
28
29 instance ZoneFinder (DomainName -> Maybe Zone) where
30     findZone = ((return . fromMaybe defaultRootZone) .)
31
32 instance ZoneFinder (DomainName -> IO (Maybe Zone)) where
33     findZone = (fmap (fromMaybe defaultRootZone) .)
34
35
36 defaultRootZone :: Zone
37 defaultRootZone
38     = Zone {
39         zoneName       = mkDomainName "."
40       , zoneResponders = [] -- FIXME
41       }