Skip to content

Commit f917de7

Browse files
committed
logs
1 parent a9ec3a6 commit f917de7

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

tools/replay/consoleui.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,13 @@ def __init__(self, replay: Replay):
8888
# Set up signal handler for clean exit
8989
signal.signal(signal.SIGINT, lambda s, f: setattr(self, '_exit', True))
9090

91+
# Set up log callback
92+
self.replay._seg_mgr.set_log_callback(self._on_log)
93+
94+
def _on_log(self, level: int, msg: str) -> None:
95+
with self._lock:
96+
self._logs.append((level, msg))
97+
9198
def _init_curses(self, stdscr) -> None:
9299
self._stdscr = stdscr
93100
curses.curs_set(0)

tools/replay/seg_mgr.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ def __init__(self, route_name: str, flags: int = 0, data_dir: str = "", auto_sou
6969

7070
self.segment_cache_limit = MIN_SEGMENTS_CACHE
7171
self._on_segment_merged_callback: Optional[Callable[[], None]] = None
72+
self._log_callback: Optional[Callable[[int, str], None]] = None # (level, msg)
7273

7374
def __del__(self):
7475
if hasattr(self, '_cv'):
@@ -115,6 +116,13 @@ def set_current_segment(self, seg_num: int) -> None:
115116
def set_callback(self, callback: Callable[[], None]) -> None:
116117
self._on_segment_merged_callback = callback
117118

119+
def set_log_callback(self, callback: Callable[[int, str], None]) -> None:
120+
self._log_callback = callback
121+
122+
def _log(self, level: int, msg: str) -> None:
123+
if self._log_callback:
124+
self._log_callback(level, msg)
125+
118126
def set_filters(self, filters: list[bool]) -> None:
119127
self._filters = filters
120128

@@ -180,12 +188,14 @@ def _load_segments_in_range(self, seg_nums: list[int], cur_seg_num: int) -> bool
180188
continue
181189

182190
# Load segment (blocking - downloads and parses)
191+
self._log(0, f"loading segment {seg_num}...")
183192
seg_data = self._load_segment(seg_num)
184193
with self._cv:
185194
self._segments[seg_num] = seg_data
186195
self._needs_update = True
187196
self._cv.notify_all()
188197
loaded_any = True
198+
self._log(0, f"segment {seg_num} loaded with {len(seg_data.events)} events")
189199

190200
# Only load one segment at a time to be responsive
191201
return loaded_any
@@ -279,4 +289,5 @@ def _merge_segments(self, seg_nums: list[int]) -> bool:
279289
self._event_data = merged_event_data
280290
self._merged_segments = segments_to_merge
281291

292+
self._log(0, f"merged segments: {sorted(segments_to_merge)}")
282293
return True

0 commit comments

Comments
 (0)