Expose DataModel.print_data() through Processor.print_data()

This commit is contained in:
Christophe Bedard 2019-11-17 14:17:22 -08:00
parent 3eac741a4c
commit 1be3ca06ef

View file

@ -256,12 +256,14 @@ class Processor():
:param handlers: the `EventHandler`s to use for processing :param handlers: the `EventHandler`s to use for processing
:param kwargs: the parameters to pass on to new handlers :param kwargs: the parameters to pass on to new handlers
""" """
self._initial_handlers = list(handlers)
expanded_handlers = self._expand_dependencies(*handlers, **kwargs) expanded_handlers = self._expand_dependencies(*handlers, **kwargs)
self._handler_multimap = self._get_handler_maps(expanded_handlers) self._handler_multimap = self._get_handler_maps(expanded_handlers)
self._register_with_handlers(expanded_handlers) self._register_with_handlers(expanded_handlers)
self._progress_display = ProcessingProgressDisplay( self._progress_display = ProcessingProgressDisplay(
[type(handler).__name__ for handler in expanded_handlers], [type(handler).__name__ for handler in expanded_handlers],
) )
self._processing_done = False
@staticmethod @staticmethod
def _expand_dependencies( def _expand_dependencies(
@ -304,16 +306,21 @@ class Processor():
for handler in handlers: for handler in handlers:
handler.register_processor(self) handler.register_processor(self)
def process(self, events: List[DictEvent]) -> None: def process(
self,
events: List[DictEvent],
) -> None:
""" """
Process all events. Process all events.
:param events: the events to process :param events: the events to process
""" """
self._progress_display.set_work_total(len(events)) if not self._processing_done:
for event in events: self._progress_display.set_work_total(len(events))
self._process_event(event) for event in events:
self._progress_display.did_work() self._process_event(event)
self._progress_display.did_work()
self._processing_done = True
def _process_event(self, event: DictEvent) -> None: def _process_event(self, event: DictEvent) -> None:
"""Process a single event.""" """Process a single event."""
@ -346,6 +353,12 @@ class Processor():
metadata = EventMetadata(event_name, timestamp, cpu_id, procname, pid, tid) metadata = EventMetadata(event_name, timestamp, cpu_id, procname, pid, tid)
handler_function(event, metadata) handler_function(event, metadata)
def print_data(self) -> None:
"""Print processed data."""
if self._processing_done:
for handler in self._initial_handlers:
handler.data.print_data()
class ProcessingProgressDisplay(): class ProcessingProgressDisplay():
"""Display processing progress periodically on stdout.""" """Display processing progress periodically on stdout."""