diff options
Diffstat (limited to 'Replay.hs')
-rw-r--r-- | Replay.hs | 21 |
1 files changed, 9 insertions, 12 deletions
@@ -9,22 +9,19 @@ import System.IO import Control.Concurrent.Thread.Delay replay :: ReplayOpts -> IO () -replay opts = go Nothing =<< streamLog (replayLogFile opts) +replay opts = go =<< streamLog (replayLogFile opts) where - go _ [] = return () - go prevts (Right l:ls) = do - case prevts of - Nothing -> return () - Just t -> - let s = loggedTimestamp l - t - ms = s * 1000000 - in delay (ceiling ms) - + go [] = return () + go (Right l:ls) = do case loggedMessage l of User (ActivityMessage a) -> do + maybe (return ()) realisticDelay (elapsedTime a) B.hPut stdout $ val $ seenData $ activity a hFlush stdout User (ControlMessage _) -> return () Developer _ -> return () - go (Just $ loggedTimestamp l) ls - go _ (Left l:_) = error $ "Failed to parse a line of the log: " ++ l + go ls + go (Left l:_) = error $ "Failed to parse a line of the log: " ++ l + +realisticDelay :: ElapsedTime -> IO () +realisticDelay (ElapsedTime n) = delay $ ceiling $ n * 1000000 |