diff options
Diffstat (limited to 'Network/DNS/StateBinary.hs')
-rw-r--r-- | Network/DNS/StateBinary.hs | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/Network/DNS/StateBinary.hs b/Network/DNS/StateBinary.hs index 05f8468..e44ee98 100644 --- a/Network/DNS/StateBinary.hs +++ b/Network/DNS/StateBinary.hs @@ -5,6 +5,7 @@ import Control.Applicative import Control.Monad.State import Data.Attoparsec import Data.Attoparsec.Enumerator +import qualified Data.Attoparsec.Lazy as AL import Data.ByteString (ByteString) import qualified Data.ByteString as BS (unpack) import qualified Data.ByteString.Lazy as BL (ByteString) @@ -114,8 +115,11 @@ getNByteString n = lift (take n) <* addPosition n initialState :: PState initialState = PState IM.empty 0 -runSGet :: SGet a -> Iteratee ByteString IO (a, PState) -runSGet parser = iterParser (runStateT parser initialState) +iterSGet :: Monad m => SGet a -> Iteratee ByteString m (a, PState) +iterSGet parser = iterParser (runStateT parser initialState) + +runSGet :: SGet a -> BL.ByteString -> Either String (a, PState) +runSGet parser bs = AL.eitherResult $ AL.parse (runStateT parser initialState) bs runSPut :: SPut -> BL.ByteString runSPut = toLazyByteString . fromWrite |