148 lines
3.5 KiB
Python
148 lines
3.5 KiB
Python
# © Crown-owned copyright 2023, Defence Science and Technology Laboratory UK
|
|
"""
|
|
Information Exchange Requirements for APE.
|
|
|
|
Used to represent an information flow from source to destination.
|
|
"""
|
|
|
|
|
|
class IER(object):
|
|
"""Information Exchange Requirement class."""
|
|
|
|
def __init__(
|
|
self,
|
|
_id: str,
|
|
_start_step: int,
|
|
_end_step: int,
|
|
_load: int,
|
|
_protocol: str,
|
|
_port: str,
|
|
_source_node_id: str,
|
|
_dest_node_id: str,
|
|
_mission_criticality: int,
|
|
_running: bool = False,
|
|
) -> None:
|
|
"""
|
|
Initialise an Information Exchange Request.
|
|
|
|
:param _id: The IER id
|
|
:param _start_step: The step when this IER should start
|
|
:param _end_step: The step when this IER should end
|
|
:param _load: The load this IER should put on a link (bps)
|
|
:param _protocol: The protocol of this IER
|
|
:param _port: The port this IER runs on
|
|
:param _source_node_id: The source node ID
|
|
:param _dest_node_id: The destination node ID
|
|
:param _mission_criticality: Criticality of this IER to the mission (0 none, 5 mission critical)
|
|
:param _running: Indicates whether the IER is currently running
|
|
"""
|
|
self.id: str = _id
|
|
self.start_step: int = _start_step
|
|
self.end_step: int = _end_step
|
|
self.source_node_id: str = _source_node_id
|
|
self.dest_node_id: str = _dest_node_id
|
|
self.load: int = _load
|
|
self.protocol: str = _protocol
|
|
self.port: str = _port
|
|
self.mission_criticality: int = _mission_criticality
|
|
self.running: bool = _running
|
|
|
|
def get_id(self) -> str:
|
|
"""
|
|
Gets IER ID.
|
|
|
|
Returns:
|
|
IER ID
|
|
"""
|
|
return self.id
|
|
|
|
def get_start_step(self) -> int:
|
|
"""
|
|
Gets IER start step.
|
|
|
|
Returns:
|
|
IER start step
|
|
"""
|
|
return self.start_step
|
|
|
|
def get_end_step(self) -> int:
|
|
"""
|
|
Gets IER end step.
|
|
|
|
Returns:
|
|
IER end step
|
|
"""
|
|
return self.end_step
|
|
|
|
def get_load(self) -> int:
|
|
"""
|
|
Gets IER load.
|
|
|
|
Returns:
|
|
IER load
|
|
"""
|
|
return self.load
|
|
|
|
def get_protocol(self) -> str:
|
|
"""
|
|
Gets IER protocol.
|
|
|
|
Returns:
|
|
IER protocol
|
|
"""
|
|
return self.protocol
|
|
|
|
def get_port(self) -> str:
|
|
"""
|
|
Gets IER port.
|
|
|
|
Returns:
|
|
IER port
|
|
"""
|
|
return self.port
|
|
|
|
def get_source_node_id(self) -> str:
|
|
"""
|
|
Gets IER source node ID.
|
|
|
|
Returns:
|
|
IER source node ID
|
|
"""
|
|
return self.source_node_id
|
|
|
|
def get_dest_node_id(self) -> str:
|
|
"""
|
|
Gets IER destination node ID.
|
|
|
|
Returns:
|
|
IER destination node ID
|
|
"""
|
|
return self.dest_node_id
|
|
|
|
def get_is_running(self) -> bool:
|
|
"""
|
|
Informs whether the IER is currently running.
|
|
|
|
Returns:
|
|
True if running
|
|
"""
|
|
return self.running
|
|
|
|
def set_is_running(self, _value: bool) -> None:
|
|
"""
|
|
Sets the running state of the IER.
|
|
|
|
Args:
|
|
_value: running status
|
|
"""
|
|
self.running = _value
|
|
|
|
def get_mission_criticality(self) -> int:
|
|
"""
|
|
Gets the IER mission criticality (used in the reward function).
|
|
|
|
Returns:
|
|
Mission criticality value (0 lowest to 5 highest)
|
|
"""
|
|
return self.mission_criticality
|