Safe Haskell | None |
---|---|
Language | Haskell2010 |
Data.ByteString.SuperBuffer
Synopsis
- data SuperBuffer
- withBuffer :: Int64 -> (SuperBuffer -> IO ()) -> IO ByteString
- appendBuffer :: SuperBuffer -> ByteString -> IO ()
- appendBufferT :: SuperBuffer -> ByteString -> IO ()
- size :: SuperBuffer -> IO Int
Documentation
data SuperBuffer Source #
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 (even when exceptions occur).
withBuffer :: Int64 -> (SuperBuffer -> IO ()) -> IO ByteString Source #
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.
appendBuffer :: SuperBuffer -> ByteString -> IO () Source #
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. Use appendBufferT
when
accessing SuperBuffer
from multiple threads.
appendBufferT :: SuperBuffer -> ByteString -> IO () Source #
Write a bytestring to the buffer and grow the buffer if needed. This function
can be used accross different threads, but is slower than appendBuffer
.