A node is a component which receive a set of traces (i.e. a list of differencies between the current model and the targeted model) and will adapt its state to match it with the targeted model.
For now a single implementation of Node is done by language. Mostly because is it one of the most complex part of a Kevoree implementation.
The method annotated with Start will be called when an instance of the node need to be started.
The method annotated with Stop will be called when an instance of the node need to be stopped.
The method annotated with Update will be called when an instance of the node need to be updated.
A field annotated with Param will be instantiated with a value provided by the model.
A few interfaces to the external system are provided to the components by injection of interfaces instances. The core will match every KevoreeInject annotated field and will look for a instance of its interface.
The provided interfaces are :
- Logger : Offers a way to log messages.
- Context : Provider accessors to the node node, the instance path and the instance name.
- ModelService : Offers operators on the node's model. For example you can use it to publish a new model, which will be adapted by the core.