module Control.Concurrent.STM.TChan.Class where
import Control.Concurrent.STM
import qualified Control.Concurrent.STM.TChan as TChan
class TChanDup chan where
dupTChan :: chan a -> STM (chan a)
instance TChanDup TChan.TChan where
dupTChan = TChan.dupTChan
class TChanWrite chan where
writeTChan :: chan a -> a -> STM ()
unGetTChan :: chan a -> a -> STM ()
isEmptyTChan :: chan a -> STM Bool
instance TChanWrite TChan.TChan where
writeTChan = TChan.writeTChan
unGetTChan = TChan.unGetTChan
isEmptyTChan = TChan.isEmptyTChan
class TChanRead chan where
readTChan :: chan a -> STM a
tryReadTChan :: chan a -> STM (Maybe a)
peekTChan :: chan a -> STM a
tryPeekTChan :: chan a -> STM (Maybe a)
instance TChanRead TChan.TChan where
readTChan = TChan.readTChan
tryReadTChan = TChan.tryReadTChan
peekTChan = TChan.peekTChan
tryPeekTChan = TChan.tryPeekTChan