hw-kafka-client-2.1.0: src/Kafka/Internal/CancellationToken.hs
module Kafka.Internal.CancellationToken
where
import Data.IORef
data CancellationStatus = Cancelled | Running deriving (Show, Eq)
newtype CancellationToken = CancellationToken (IORef CancellationStatus)
newCancellationToken :: IO CancellationToken
newCancellationToken = CancellationToken <$> newIORef Running
status :: CancellationToken -> IO CancellationStatus
status (CancellationToken ref) = readIORef ref
cancel :: CancellationToken -> IO ()
cancel (CancellationToken ref) = atomicWriteIORef ref Cancelled