]> gitweb @ CieloNegro.org - haskell-dns.git/blobdiff - Network/DNS/Named/Zone.hs
Many changes...
[haskell-dns.git] / Network / DNS / Named / Zone.hs
diff --git a/Network/DNS/Named/Zone.hs b/Network/DNS/Named/Zone.hs
new file mode 100644 (file)
index 0000000..da27c3e
--- /dev/null
@@ -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