diff options
Diffstat (limited to 'Network/DNS/Decode.hs')
-rw-r--r-- | Network/DNS/Decode.hs | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/Network/DNS/Decode.hs b/Network/DNS/Decode.hs index b598d97..b99fc44 100644 --- a/Network/DNS/Decode.hs +++ b/Network/DNS/Decode.hs @@ -11,23 +11,21 @@ import Data.Bits import Data.ByteString (ByteString) import qualified Data.ByteString.Char8 as BS import qualified Data.ByteString.Lazy as BL -import Data.Enumerator (Enumerator, run_, ($$)) +import Data.Conduit +import Data.Conduit.Network import Data.IP import Data.Maybe import Network import Network.DNS.Internal import Network.DNS.StateBinary -import Network.Socket.Enumerator ---------------------------------------------------------------- {-| Receiving DNS data from 'Socket' and parse it. The second argument is a buffer size for the socket. -} -receive :: Socket -> Integer -> IO DNSFormat -receive sock bufsize = receiveDNSFormat responseEnum - where - responseEnum = enumSocket bufsize sock +receive :: Socket -> IO DNSFormat +receive sock = receiveDNSFormat $ sourceSocket sock ---------------------------------------------------------------- @@ -37,12 +35,10 @@ decode :: BL.ByteString -> Either String DNSFormat decode bs = fst <$> runSGet decodeResponse bs ---------------------------------------------------------------- - -receiveDNSFormat :: Enumerator ByteString IO (DNSFormat, PState) - -> IO DNSFormat -receiveDNSFormat enum = fst <$> run_ (enum $$ iter) +receiveDNSFormat :: Source (ResourceT IO) ByteString -> IO DNSFormat +receiveDNSFormat src = fst <$> runResourceT (src $$ sink) where - iter = iterSGet decodeResponse + sink = sinkSGet decodeResponse ---------------------------------------------------------------- |