lifted-stm-0.1: src/Control/Concurrent/STM/TQueue/Lifted.hs
{-# LANGUAGE UnicodeSyntax #-}
{-# LANGUAGE FlexibleContexts #-}
-- | Lifted 'TQueue' operations.
module Control.Concurrent.STM.TQueue.Lifted
( TQueue
, newTQueue
, newTQueueIO
, readTQueue
, tryReadTQueue
, peekTQueue
, tryPeekTQueue
, flushTQueue
, writeTQueue
, unGetTQueue
, isEmptyTQueue
) where
import Control.Monad.Base (MonadBase(..))
import Control.Monad.STM (STM)
import Control.Concurrent.STM.TQueue (TQueue)
import qualified Control.Concurrent.STM.TQueue as STM
-- | A lifted version of 'STM.newTQueue'.
newTQueue ∷ MonadBase STM μ ⇒ μ (TQueue α)
newTQueue = liftBase STM.newTQueue
{-# INLINE newTQueue #-}
-- | A lifted version of 'STM.newTQueueIO'.
newTQueueIO ∷ MonadBase IO μ ⇒ μ (TQueue α)
newTQueueIO = liftBase STM.newTQueueIO
{-# INLINE newTQueueIO #-}
-- | A lifted version of 'STM.readTQueue'.
readTQueue ∷ MonadBase STM μ ⇒ TQueue α → μ α
readTQueue = liftBase . STM.readTQueue
{-# INLINE readTQueue #-}
-- | A lifted version of 'STM.tryReadTQueue'.
tryReadTQueue ∷ MonadBase STM μ ⇒ TQueue α → μ (Maybe α)
tryReadTQueue = liftBase . STM.tryReadTQueue
{-# INLINE tryReadTQueue #-}
-- | A lifted version of 'STM.peekTQueue'.
peekTQueue ∷ MonadBase STM μ ⇒ TQueue α → μ α
peekTQueue = liftBase . STM.peekTQueue
{-# INLINE peekTQueue #-}
-- | A lifted version of 'STM.tryPeekTQueue'.
tryPeekTQueue ∷ MonadBase STM μ ⇒ TQueue α → μ (Maybe α)
tryPeekTQueue = liftBase . STM.tryPeekTQueue
{-# INLINE tryPeekTQueue #-}
-- | A lifted version of 'STM.flushTQueue'.
flushTQueue ∷ MonadBase STM μ ⇒ TQueue α → μ [α]
flushTQueue = liftBase . STM.flushTQueue
{-# INLINE flushTQueue #-}
-- | A lifted version of 'STM.writeTQueue'.
writeTQueue ∷ MonadBase STM μ ⇒ TQueue α → α → μ ()
writeTQueue = (liftBase .) . STM.writeTQueue
{-# INLINE writeTQueue #-}
-- | A lifted version of 'STM.unGetTQueue'.
unGetTQueue ∷ MonadBase STM μ ⇒ TQueue α → α → μ ()
unGetTQueue = (liftBase .) . STM.unGetTQueue
{-# INLINE unGetTQueue #-}
-- | A lifted version of 'STM.isEmptyTQueue'.
isEmptyTQueue ∷ MonadBase STM μ ⇒ TQueue α → μ Bool
isEmptyTQueue = liftBase . STM.isEmptyTQueue
{-# INLINE isEmptyTQueue #-}