Source code for pytwinnet.simulation.events


from __future__ import annotations
from dataclasses import dataclass
from typing import Tuple
from ..core.digital_twin import DigitalTwin

[docs] @dataclass(order=True) class Event: timestamp: float
[docs] def apply(self, twin: DigitalTwin) -> None: raise NotImplementedError
[docs] @dataclass(order=True) class MoveNodeEvent(Event): node_id: str new_position: Tuple[float, float, float]
[docs] def apply(self, twin: DigitalTwin) -> None: node = twin.network.get_node_by_id(self.node_id) if node: node.move_to(self.new_position)
[docs] @dataclass(order=True) class TrafficGenerationEvent(Event): source_node: str dest_node: str data_rate_mbps: float
[docs] def apply(self, twin: DigitalTwin) -> None: src = twin.network.get_node_by_id(self.source_node) dst = twin.network.get_node_by_id(self.dest_node) if src and dst: src.metadata["generated_traffic_mbps"] = src.metadata.get("generated_traffic_mbps", 0.0) + self.data_rate_mbps dst.metadata["received_traffic_mbps"] = dst.metadata.get("received_traffic_mbps", 0.0) + self.data_rate_mbps