Source code for openclsim.core.log

"""Component to log the simulation objecs."""
import datetime
from enum import Enum

from .simpy_object import SimpyObject


[docs]class LogState(Enum): """ LogState enumeration of all possible states of a Log object. Access the name using .name and the integer value using .value """ START = 1 STOP = 2 WAIT_START = 3 WAIT_STOP = 4 UNKNOWN = -1
[docs]class Log(SimpyObject): """Log class to log the object activities.""" def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) """Initialization""" self.log = { "Timestamp": [], "ActivityID": [], "ActivityState": [], "ObjectState": [], "ActivityLabel": [], }
[docs] def log_entry( self, t, activity_id, activity_state=LogState.UNKNOWN, additional_state=None, activity_label={}, ): object_state = self.get_state() if additional_state: object_state.update(additional_state) if activity_label != {}: assert activity_label.get("type") is not None assert activity_label.get("ref") is not None self.log["Timestamp"].append(datetime.datetime.utcfromtimestamp(t)) self.log["ActivityID"].append(activity_id) self.log["ActivityState"].append(activity_state.name) self.log["ObjectState"].append(object_state) self.log["ActivityLabel"].append(activity_label)
[docs] def get_state(self): """Add an empty instance of the get state function so that it is always available.""" state = {} if hasattr(super(), "get_state"): state = super().get_state() return state