From d36826a24f8481ac1c65a7b5e6cb9ac682792fb5 Mon Sep 17 00:00:00 2001 From: Rehno Lindeque Date: Tue, 5 Jun 2012 01:49:29 -0700 Subject: [PATCH] Documented a function for clearing a message queue for future use --- src/STM/Messages.hs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/STM/Messages.hs b/src/STM/Messages.hs index 8b51991..a722414 100644 --- a/src/STM/Messages.hs +++ b/src/STM/Messages.hs @@ -3,6 +3,7 @@ module STM.Messages (Messages, newIO, enqueueMessage) where -- Standard modules import Control.Concurrent.STM (atomically) import Control.Concurrent.STM.TChan +import Control.Monad (unless) -- Application modules import Message @@ -15,4 +16,16 @@ newIO = newTChanIO -- Add a message to the queue as a single atomic transaction enqueueMessage :: Messages -> Message -> IO () -enqueueMessage messages = atomically . (writeTChan messages) +enqueueMessage m = atomically . (writeTChan m) + +{-- Clear all the messages from the queue without processing them using multiple atomic operations +clearMessages :: Messages -> IO () +clearMessages m = do + done <- atomically $ do + isEmpty <- isEmptyTChan m + unless isEmpty $ readTChan m >> return () + return isEmpty + if done + then return () + else clearMessages m +--} \ No newline at end of file