1. AML-IP Node

An AML-IP network is divided in independent stand-alone individuals named Nodes. A Node, understood as a software piece that performs one or multiple Actions in a auto-managing way, does not require external orchestration neither a central point of computation. These actions can be local actions such as calculations, data process, algorithm executions, etc., or communication actions as send messages, receive data, wait for data or specific status, etc. Each Node is associated with a single Scenario.

There are various methods to operate or interact with a Node. Some are standalone applications capable of executing predefined actions, while others necessitate user interaction to specify the actions a Node should perform based on its status and received data. In this last case, the Nodes are programming Objects that can be instantiated and customized regarding the action that must be performed.

1.1. Nodes attributes

1.1.1. Node Id

Each Node in the network has a unique identifier. This identifier is created by combining its name, that is given to each node once it is created, and a randomly generated number. Node names must adhere to the character limitations of less than 28 characters between 0-9 a-z A-Z _ .

Examples of Nodes Ids are: AMLIPNode.d2.24.9f.34, My_Custom_Node.58.cd.72.85, status.node_7.37.18.f7.05.

1.1.2. Node State

The state of a node reflects its current operational status. Node states serve as indicators of the node’s current activity and can be utilized to manage interactions with other nodes. They also provide users with insights into the node’s operational status.

Nodes modify their states using the method change_status_(const eprosima::amlip::types::StateKind& new_state).

Users can monitor node states by leveraging a StatusNode configured to intercept status messages. This facilitates real-time observation of node activities and enables users to stay informed about the network’s operational status.

A Node’s state is represented by the eprosima::amlip::types::StateKind enumeration that can be one of the following values:

  • unknown: The node has not defined state kind.

  • running: The node is running (executing some action).

  • stopped: The node is stopped.

  • dropped: The node has been removed from the network.

1.1.3. Node Kind

Every Node belongs to a specific Kind, which determines its behavior and actions. Nodes are not restricted in the number of instances per kind within a network. The kind of the nodes follows the Object Oriented Programming ideas, where every Node Kind represents a class and can inherit from other Node classes (e.g. every Node Kind inherits from ParentNode); and each running node in the network is an instance of the class of its Kind.