superbuffer-0.3.1.1: Efficiently build a bytestring from smaller chunks

Safe HaskellNone
LanguageHaskell2010

Data.ByteString.SuperBuffer.Pure

Synopsis

Documentation

data SuperBuffer Source #

The buffer data structure.

withBuffer :: Int -> (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.

size :: SuperBuffer -> IO Int Source #

Get current (filled) size of the buffer