42 lines
1.5 KiB
Python
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)
|