Browse Source

Add missing file

master
Denis Tereshkin 11 months ago
parent
commit
86fa7d53c1
  1. 24
      src/ATrade/Utils/MessagePipe.hs

24
src/ATrade/Utils/MessagePipe.hs

@ -0,0 +1,24 @@ @@ -0,0 +1,24 @@
module ATrade.Utils.MessagePipe
(
MessagePipe
, push
, getMessages
, emptyMessagePipe
) where
import qualified Data.ByteString as B
import qualified Data.List as L
newtype MessagePipe = MessagePipe B.ByteString
emptyMessagePipe = MessagePipe B.empty
push :: B.ByteString -> MessagePipe -> MessagePipe
push chunk (MessagePipe content) = MessagePipe $ B.append content chunk
getMessages :: MessagePipe -> (MessagePipe, [B.ByteString])
getMessages (MessagePipe content) =
case B.split 0 content of
[] -> (MessagePipe B.empty, [])
[x] -> (MessagePipe x, [])
chunks -> (MessagePipe (L.last chunks), L.init chunks)
Loading…
Cancel
Save