diff options
author | Kazu Yamamoto <kazu@iij.ad.jp> | 2010-04-08 18:23:47 +0900 |
---|---|---|
committer | Kazu Yamamoto <kazu@iij.ad.jp> | 2010-04-08 18:23:47 +0900 |
commit | f058a1be787eaadc41f53785cadb058edf20762b (patch) | |
tree | 5a65dcbfe513f82b6776e4941360e737a2b3f66c /Network/DNS/StateBinary.hs | |
parent | 19cd857470e3a46a3d8e06d84c0728a08061646f (diff) |
using Lazy ByteString
Diffstat (limited to 'Network/DNS/StateBinary.hs')
-rw-r--r-- | Network/DNS/StateBinary.hs | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/Network/DNS/StateBinary.hs b/Network/DNS/StateBinary.hs index 4241364..5e27b30 100644 --- a/Network/DNS/StateBinary.hs +++ b/Network/DNS/StateBinary.hs @@ -3,8 +3,8 @@ module Network.DNS.StateBinary where import Control.Monad.State import Data.Binary.Get import Data.Binary.Put -import Data.ByteString.Lazy (ByteString) -import qualified Data.ByteString.Lazy as BS hiding (ByteString) +import qualified Data.ByteString.Lazy.Char8 as L +import Data.Char import Data.IntMap (IntMap) import qualified Data.IntMap as IM (insert, lookup, empty) import Data.Word @@ -82,10 +82,12 @@ getPosition :: SGet Int getPosition = fromIntegral <$> lift bytesRead getNBytes :: Int -> SGet [Int] -getNBytes len = toInts <$> getNbytes len +getNBytes len = toInts <$> getNByteString len where - toInts = map fromIntegral . BS.unpack - getNbytes = lift . getLazyByteString . fromIntegral + toInts = map ord . L.unpack + +getNByteString :: Int -> SGet L.ByteString +getNByteString len = lift . getLazyByteString . fromIntegral $ len ---------------------------------------------------------------- @@ -100,8 +102,8 @@ pop n = IM.lookup n <$> get initialState :: IntMap Domain initialState = IM.empty -runSGet :: SGet DNSFormat -> ByteString -> DNSFormat +runSGet :: SGet DNSFormat -> L.ByteString -> DNSFormat runSGet res bs = fst $ runGet (runStateT res initialState) bs -runSPut :: Put -> ByteString -runSPut = runPut
\ No newline at end of file +runSPut :: Put -> L.ByteString +runSPut = runPut |