Make util processor method a base class method

This commit is contained in:
Christophe Bedard 2019-07-29 13:47:44 +02:00
parent 5eb175cfd4
commit 9b96bb1132
3 changed files with 17 additions and 18 deletions

View file

@ -67,3 +67,16 @@ class EventHandler():
cpu_id = get_field(event, 'cpu_id')
metadata = EventMetadata(event_name, pid, tid, timestamp, procname, cpu_id)
handler_function(event, metadata)
@classmethod
def process(cls, events: List[Dict[str, str]]) -> 'EventHandler':
"""
Create processor and process unpickled events to create model.
:param events: the list of events
:return: the processor object after processing
"""
assert cls != EventHandler, 'only call process() from inheriting classes'
processor = cls() # pylint: disable=no-value-for-parameter
processor.handle_events(events)
return processor

View file

@ -15,7 +15,6 @@
"""Module for trace events processor and ROS model creation."""
from typing import Dict
from typing import List
from tracetools_read.utils import get_field
@ -198,15 +197,3 @@ class Ros2Processor(EventHandler):
bool(is_intra_process))
else:
print(f'No matching callback start for callback object "{callback_object}"')
def ros2_process(events: List[Dict[str, str]]) -> Ros2Processor:
"""
Process unpickled events and create ROS 2 model.
:param events: the list of events
:return: the processor object
"""
processor = Ros2Processor()
processor.handle_events(events)
return processor

View file

@ -18,9 +18,9 @@
import argparse
import time
from tracetools_analysis.analysis import cpu_time_processor
from tracetools_analysis.analysis import load
from tracetools_analysis.analysis import ros2_processor
from tracetools_analysis.analysis.cpu_time_processor import CpuTimeProcessor
from tracetools_analysis.analysis.ros2_processor import Ros2Processor
def parse_args():
@ -37,9 +37,8 @@ def main():
start_time = time.time()
events = load.load_pickle(pickle_filename)
processor = ros2_processor.ros2_process(events)
cpu_processor = cpu_time_processor.CpuTimeProcessor()
cpu_processor.handle_events(events)
processor = Ros2Processor.process(events)
cpu_processor = CpuTimeProcessor.process(events)
time_diff = time.time() - start_time
print(f'processed {len(events)} events in {time_diff * 1000:.2f} ms')