X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=haskell-dns.git;a=blobdiff_plain;f=Network%2FDNS%2FNamed%2FZone.hs;fp=Network%2FDNS%2FNamed%2FZone.hs;h=da27c3e694ab13c669bb5b2d8ee3d0c649fcceae;hp=0000000000000000000000000000000000000000;hb=7a09a987b0369db0c013fb10272329c733ffc8a1;hpb=5d250da422c01c7aab948ebdda5ef618f18e0f39 diff --git a/Network/DNS/Named/Zone.hs b/Network/DNS/Named/Zone.hs new file mode 100644 index 0000000..da27c3e --- /dev/null +++ b/Network/DNS/Named/Zone.hs @@ -0,0 +1,37 @@ +module Network.DNS.Named.Zone + ( Zone(..) + , ZoneFinder(..) + + , defaultRootZone + ) + where + +import Data.Maybe +import Network.DNS.Message +import Network.DNS.Named.Responder + + +data Zone + = Zone { + zoneName :: !DomainName + , zoneResponders :: ![SomeResponder] + } + +class ZoneFinder a where + findZone :: a -> DomainName -> IO Zone + +instance ZoneFinder (DomainName -> Zone) where + findZone = (return .) + +instance ZoneFinder (DomainName -> IO Zone) where + findZone = id + +instance ZoneFinder (DomainName -> Maybe Zone) where + findZone = ((return . fromMaybe defaultRootZone) .) + +instance ZoneFinder (DomainName -> IO (Maybe Zone)) where + findZone = (fmap (fromMaybe defaultRootZone) .) + + +defaultRootZone :: Zone +defaultRootZone = error "FIXME: defaultRootZone is not implemented yet" \ No newline at end of file