packages feed

quic-0.2.3: Network/QUIC/Stream/Queue.hs

{-# LANGUAGE RecordWildCards #-}

module Network.QUIC.Stream.Queue where

import Control.Concurrent.STM
import Data.ByteString (ByteString)

import Network.QUIC.Stream.Types

putRecvStreamQ :: Stream -> ByteString -> IO ()
putRecvStreamQ Stream{..} = atomically . writeTQueue (recvStreamQ streamRecvQ)

takeRecvStreamQ :: Stream -> IO ByteString
takeRecvStreamQ Stream{..} = atomically $ readTQueue $ recvStreamQ streamRecvQ

tryTakeRecvStreamQ :: Stream -> IO (Maybe ByteString)
tryTakeRecvStreamQ Stream{..} = atomically $ tryReadTQueue $ recvStreamQ streamRecvQ