Difficult-Rocket/libs/pyglet/media/buffered_logger.py

44 lines
1.0 KiB
Python
Raw Permalink Normal View History

2021-04-16 23:21:06 +08:00
"""
Responsabilities
Handles accumulation of debug events while playing media_player and saves
when sample's play ends.
"""
import time
import pickle
class BufferedLogger:
def __init__(self, outfile):
self.outfile = outfile
self.log_entries = []
self.start_wall_time = None
# (fn, args)
self.on_close_callback_info = None
def init_wall_time(self):
self.start_wall_time = time.perf_counter()
def log(self, *args):
self.log_entries.append(args)
def rebased_wall_time(self):
return time.perf_counter() - self.start_wall_time
def close(self):
self.save_log_entries_as_pickle()
if self.on_close_callback_info is not None:
fn, args = self.on_close_callback_info
fn(self.log_entries, *args)
def save_log_entries_as_pickle(self):
with open(self.outfile, "wb") as f:
pickle.dump(self.log_entries, f)
def clear(self):
self.log_entries = []
logger = None