我正在将一个使用 GHC.IO.Handle 进行网络编程的软件包转换为 Network.Connection.Connection。其中一个痛点是需要修改 Data.ByteString.Lazy.ByteString 到 Data.ByteString.Char8.ByteString 的地方比较多。
以下是一个示例函数:
我该如何将 Data.ByteString.Char8.ByteString 转换为 Data.ByteString.Lazy.ByteString 以供在 Data.Binary.Get 中使用?
以下是一个示例函数:
import qualified Data.ByteString.Lazy as BL
-- gets the size of the frame
-- the bytestring should be at least 7 bytes long, otherwise this method will fail
peekFrameSize :: BL.ByteString -> PayloadSize
peekFrameSize = runGet f
where
f = do
void $ getWord8 -- 1 byte
void $ (get :: Get ChannelID) -- 2 bytes
get :: Get PayloadSize -- 4 bytes
我该如何将 Data.ByteString.Char8.ByteString 转换为 Data.ByteString.Lazy.ByteString 以供在 Data.Binary.Get 中使用?