summaryrefslogtreecommitdiffhomepage
path: root/Replay.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Replay.hs')
-rw-r--r--Replay.hs21
1 files changed, 9 insertions, 12 deletions
diff --git a/Replay.hs b/Replay.hs
index 1993ce3..8d2e3ae 100644
--- a/Replay.hs
+++ b/Replay.hs
@@ -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