FTILoop Experiment Lifecycle Transitions by Component

This page describes the actions performed by the main components in the architecture during each of the lifecycle transitions in an NRP-Core experiment running an FTILoop : Start, Initialize, RunLoop, Shutdown, Cleanup. These components can be grouped in different sections depending on the role they play in the architecture:

  • Simulation Management: initializes and manages the Simulation Loop

  • TransceiverFunction Management: initializes and manage the execution of TransceiverFunctions

  • Engine : Engine processes and clients

  • Process Management : those components in charge of launching, monitor and shutdown engine processes.

  • Engine Launching: orchestrates the launching of engines. Dynamically loads engine plugins, receive process launchers from the ProcessLauncherManager and configure them to launch the engine processes.

In the big diagram at the bottom of the page the actions performed by each architecture component during each of the lifecycle transitions is described. Each of the boxes in the diagram correspond to an actual class in the architecture. The boxes are grouped by the role they play in the architecture: Simulation Management, TransceiverFunction Management, Engine Launching, Process Manager and Engine.

The diagram contains a significant amount of information and in consequence is quite large. Below is given a simplified version of the diagram containing only the different groups of components and the relationships between them. This diagram maintains the same color code and spatial distribution of the groups as in the large diagram at the bottom.

Simplified lifecycle components diagram

Below is the complete diagram. In order to see it in full size (right click on it and) open it in a new tab, then it can be navigated using the scroll bars.

Launching Engines in Docker containers

In case of launching one or multiple engines with DockerLauncher launch command, i.e. some engines are launched inside of docker containers, there is some additional structure in the Process Management component which is depicted in the diagram below:

Simplified lifecycle components diagram of NRP-Core with docker containers

The main differences with respect to the previous case are:

  • Process Launcher: connects to a remote docker daemon hosting the required docker images, issuing requests to the latter to create, kill, and remove docker containers.

  • Docker Daemon: Manages requests from the NRP-Core process. Runs the containerized simulation.