tracetools_analysis/tracetools_analysis/analysis/handler.py
2019-06-07 10:57:28 +02:00

42 lines
1.5 KiB
Python

# Event handler
import sys
from . import lttng_models
class EventHandler():
"""Base event handling class."""
def __init__(self, handler_map):
"""
Constructor.
:param handler_map (map(str: function)): the mapping from event name to handling method
"""
self._handler_map = handler_map
def process_events(self, events):
"""
Process events by calling their handlers.
:param events (list(dict(str:str))): the events to process
"""
for event in events:
self._handle(event)
def _handle(self, event):
event_name = lttng_models.get_name(event)
handler_function = self._handler_map.get(event_name, None)
if handler_function is not None:
pid = lttng_models.get_field(event,
'vpid',
default=lttng_models.get_field(event, 'pid'))
tid = lttng_models.get_field(event,
'vtid',
default=lttng_models.get_field(event, 'tid'))
timestamp = lttng_models.get_field(event, '_timestamp')
procname = lttng_models.get_field(event, 'procname')
metadata = lttng_models.EventMetadata(event_name, pid, tid, timestamp, procname)
handler_function(event, metadata)
else:
print(f'unhandled event name: {event_name}', file=sys.stderr)