.. index:: pair: page; FTILoop Experiment Lifecycle Transitions by Component .. _doxid-fti_lifecycle_components: 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 :ref:`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 * :ref:`TransceiverFunction ` Management: initializes and manage the execution of TransceiverFunctions * :ref:`Engine ` : Engine processes and clients * :ref:`Process Management ` : those components in charge of launching, monitor and shutdown engine processes. * Engine Launching: orchestrates the launching of engines. Dynamically loads engine :ref:`plugins `, receive process launchers from the :ref:`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, :ref:`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. .. image:: lifecycle_components_simple.png :width: 1201 :align: center :alt: 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. .. image:: lifecycle_components.png :width: 3796 :align: center .. _doxid-fti_lifecycle_components_1fti_lifecycle_components_docker: Launching Engines in Docker containers ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In case of launching one or multiple engines with :ref:`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: .. image:: lifecycle_multi_docker.png :width: 1388 :align: center :alt: 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.