-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Efficiently build a bytestring from smaller chunks -- -- Efficiently (both fast and memory efficient) build a bytestring from -- smaller chunks @package superbuffer @version 0.1.0.0 module Data.ByteString.SuperBuffer -- | The buffer. Internally only a pointer to a C struct. Don't worry, this -- module attempts to make usage of the SuperBuffer as safe as possible -- in terms of memory leaks (with exceptions). data SuperBuffer -- | Allocate a new buffer with a given initial size. The perfect starting -- point depends on the expected total size and the average size for a -- single chunk written with appendBuffer. You can always start -- with 1024 and optimize from there with benchmarks. Please note that -- the SuperBuffer will no longer be valid after this function -- terminates, so do NOT pass it to some other thread without waiting for -- it to finish in the action. withBuffer :: Int64 -> (SuperBuffer -> IO ()) -> IO ByteString -- | Write a bytestring to the buffer and grow the buffer if needed. Note -- that only one thread at any given time may call this function, so if -- you are sharing the SuperBuffer between threads make sure you -- place some type of guarding/locking around this function. appendBuffer :: SuperBuffer -> ByteString -> IO ()