Move *DataModel ownership to base EventHandler class
This commit is contained in:
parent
dc27e43d35
commit
7a1c2f0334
5 changed files with 14 additions and 28 deletions
|
@ -27,6 +27,8 @@ from tracetools_read import DictEvent
|
||||||
from tracetools_read import get_event_name
|
from tracetools_read import get_event_name
|
||||||
from tracetools_read import get_field
|
from tracetools_read import get_field
|
||||||
|
|
||||||
|
from ..data_model import DataModel
|
||||||
|
|
||||||
|
|
||||||
class EventMetadata():
|
class EventMetadata():
|
||||||
"""Container for event metadata."""
|
"""Container for event metadata."""
|
||||||
|
@ -113,19 +115,20 @@ class EventHandler(Dependant):
|
||||||
self,
|
self,
|
||||||
*,
|
*,
|
||||||
handler_map: HandlerMap,
|
handler_map: HandlerMap,
|
||||||
|
data_model: DataModel = None,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""
|
"""
|
||||||
Create an EventHandler.
|
Create an EventHandler.
|
||||||
|
|
||||||
TODO make subclasses pass on their *DataModel to this class
|
|
||||||
|
|
||||||
:param handler_map: the mapping from event name to handling method
|
:param handler_map: the mapping from event name to handling method
|
||||||
|
:param data_model: the data model
|
||||||
"""
|
"""
|
||||||
assert handler_map is not None and len(handler_map) > 0, \
|
assert handler_map is not None and len(handler_map) > 0, \
|
||||||
f'empty map: {self.__class__.__name__}'
|
f'empty map: {self.__class__.__name__}'
|
||||||
assert all(required_name in handler_map.keys() for required_name in self.required_events())
|
assert all(required_name in handler_map.keys() for required_name in self.required_events())
|
||||||
self._handler_map = handler_map
|
self._handler_map = handler_map
|
||||||
|
self._data_model = data_model
|
||||||
self._processor = None
|
self._processor = None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
@ -134,9 +137,9 @@ class EventHandler(Dependant):
|
||||||
return self._handler_map
|
return self._handler_map
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def data(self) -> None:
|
def data(self) -> Union[DataModel, None]:
|
||||||
"""Get the data model."""
|
"""Get the data model."""
|
||||||
return None
|
return self._data_model
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def processor(self) -> 'Processor':
|
def processor(self) -> 'Processor':
|
||||||
|
|
|
@ -43,11 +43,10 @@ class CpuTimeHandler(EventHandler):
|
||||||
}
|
}
|
||||||
super().__init__(
|
super().__init__(
|
||||||
handler_map=handler_map,
|
handler_map=handler_map,
|
||||||
|
data_model=CpuTimeDataModel(),
|
||||||
**kwargs,
|
**kwargs,
|
||||||
)
|
)
|
||||||
|
|
||||||
self._data_model = CpuTimeDataModel()
|
|
||||||
|
|
||||||
# Temporary buffers
|
# Temporary buffers
|
||||||
# cpu_id -> start timestamp of the running thread
|
# cpu_id -> start timestamp of the running thread
|
||||||
self._cpu_start: Dict[int, int] = {}
|
self._cpu_start: Dict[int, int] = {}
|
||||||
|
@ -58,10 +57,6 @@ class CpuTimeHandler(EventHandler):
|
||||||
'sched_switch',
|
'sched_switch',
|
||||||
}
|
}
|
||||||
|
|
||||||
@property
|
|
||||||
def data(self) -> CpuTimeDataModel:
|
|
||||||
return self._data_model
|
|
||||||
|
|
||||||
def _handle_sched_switch(
|
def _handle_sched_switch(
|
||||||
self, event: Dict, metadata: EventMetadata
|
self, event: Dict, metadata: EventMetadata
|
||||||
) -> None:
|
) -> None:
|
||||||
|
|
|
@ -33,13 +33,10 @@ class MemoryUsageHandler(EventHandler):
|
||||||
) -> None:
|
) -> None:
|
||||||
if type(self) is MemoryUsageHandler:
|
if type(self) is MemoryUsageHandler:
|
||||||
raise RuntimeError('Do not instanciate MemoryUsageHandler directly!')
|
raise RuntimeError('Do not instanciate MemoryUsageHandler directly!')
|
||||||
super().__init__(**kwargs)
|
super().__init__(
|
||||||
|
data_model=MemoryUsageDataModel(),
|
||||||
self._data_model = MemoryUsageDataModel()
|
**kwargs,
|
||||||
|
)
|
||||||
@property
|
|
||||||
def data(self) -> MemoryUsageDataModel:
|
|
||||||
return self._data_model
|
|
||||||
|
|
||||||
def _update(
|
def _update(
|
||||||
self,
|
self,
|
||||||
|
|
|
@ -66,10 +66,10 @@ class ProfileHandler(EventHandler):
|
||||||
}
|
}
|
||||||
super().__init__(
|
super().__init__(
|
||||||
handler_map=handler_map,
|
handler_map=handler_map,
|
||||||
|
data_model=ProfileDataModel(),
|
||||||
**kwargs,
|
**kwargs,
|
||||||
)
|
)
|
||||||
|
|
||||||
self._data_model = ProfileDataModel()
|
|
||||||
self._address_to_func = {
|
self._address_to_func = {
|
||||||
self.addr_to_int(addr): name for addr, name in address_to_func.items()
|
self.addr_to_int(addr): name for addr, name in address_to_func.items()
|
||||||
}
|
}
|
||||||
|
@ -100,10 +100,6 @@ class ProfileHandler(EventHandler):
|
||||||
"""Transform an address into an `int` if it's a hex `str`."""
|
"""Transform an address into an `int` if it's a hex `str`."""
|
||||||
return int(addr, 16) if isinstance(addr, str) else addr
|
return int(addr, 16) if isinstance(addr, str) else addr
|
||||||
|
|
||||||
@property
|
|
||||||
def data(self) -> ProfileDataModel:
|
|
||||||
return self._data_model
|
|
||||||
|
|
||||||
def _handle_sched_switch(
|
def _handle_sched_switch(
|
||||||
self, event: Dict, metadata: EventMetadata
|
self, event: Dict, metadata: EventMetadata
|
||||||
) -> None:
|
) -> None:
|
||||||
|
|
|
@ -69,11 +69,10 @@ class Ros2Handler(EventHandler):
|
||||||
}
|
}
|
||||||
super().__init__(
|
super().__init__(
|
||||||
handler_map=handler_map,
|
handler_map=handler_map,
|
||||||
|
data_model=Ros2DataModel(),
|
||||||
**kwargs,
|
**kwargs,
|
||||||
)
|
)
|
||||||
|
|
||||||
self._data_model = Ros2DataModel()
|
|
||||||
|
|
||||||
# Temporary buffers
|
# Temporary buffers
|
||||||
self._callback_instances = {}
|
self._callback_instances = {}
|
||||||
|
|
||||||
|
@ -83,10 +82,6 @@ class Ros2Handler(EventHandler):
|
||||||
'ros2:rcl_init',
|
'ros2:rcl_init',
|
||||||
}
|
}
|
||||||
|
|
||||||
@property
|
|
||||||
def data(self) -> Ros2DataModel:
|
|
||||||
return self._data_model
|
|
||||||
|
|
||||||
def _handle_rcl_init(
|
def _handle_rcl_init(
|
||||||
self, event: Dict, metadata: EventMetadata,
|
self, event: Dict, metadata: EventMetadata,
|
||||||
) -> None:
|
) -> None:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue