-- | A printer which blocks for a certain time and writes to log module Thermoprint.Server.Printer.Debug.Delayed ( delayedDebugPrint ) where import Control.Monad.IO.Class import Control.Applicative import Control.Concurrent (threadDelay) import Thermoprint.Server.Printer import Thermoprint.Server.Printer.Debug delayedDebugPrint :: Int -> PrinterMethod -- ^ Wait the given number of microseconds before invoking 'debugPrint' delayedDebugPrint wait = PM $ \po -> let (PM debugPrint') = debugPrint in liftIO (threadDelay wait) *> debugPrint' po