natskell-0.0.0.1: internal/Plumbing/Pipeline/Broadcasting/Transformer.hs
module Pipeline.Broadcasting.Transformer where
import Conduit
import qualified Data.ByteString.Lazy as LBS
import Lib.Logger.Types (LogLevel (..), MonadLogger (..))
import Transformers.Transformers
transformer :: (MonadLogger m, MonadIO m, Transformer t)
=> Int
-> ConduitT t LBS.ByteString m ()
transformer bufferLimit = awaitForever $ \t -> do
let bytes = transform t
byteCount = fromIntegral (LBS.length bytes)
if byteCount > bufferLimit
then
lift . logMessage Error $
"dropping outbound message: " ++ show byteCount ++ " bytes exceeds limit " ++ show bufferLimit
else yield bytes