diff --git a/lib/trinity/sim_logger.ex b/lib/trinity/sim_logger.ex index 834ff72..e61ebd0 100644 --- a/lib/trinity/sim_logger.ex +++ b/lib/trinity/sim_logger.ex @@ -12,6 +12,10 @@ defmodule Trinity.SimLogger do @spec log_head(non_neg_integer) :: [String.t] def log_head(count) do + %{log_atomic: log_atomic} = get_sim() + last_i = :atomics.get(log_atomic, 2) + count = min(last_i, count) + scan_log(1, count) end @@ -19,12 +23,17 @@ defmodule Trinity.SimLogger do def log_tail(count) do %{log_atomic: log_atomic} = get_sim() last_i = :atomics.get(log_atomic, 2) + count = min(last_i, count) + scan_log(last_i - count, count) end @spec scan_log(non_neg_integer, non_neg_integer) :: [String.t] def scan_log(i, count) do - %{log: log} = get_sim() + %{log: log, log_atomic: log_atomic} = get_sim() + last_i = :atomics.get(log_atomic, 2) + count = min(last_i - i, count) + do_scan_log(log, i + count, count, []) end