As the base implementation of the the node’s internal is taking shape, it is time to talk about what de different modules do.
Before that, it should be mentioned, that using the EPI approach, all of these modules are lazy connected to the others, thus they could be easily replaced with other implementations.
CoreServer is the module responsible for the communication with other nodes. It gets the connection information (or if node is the master, the used port) from the Beacon module. Then it handles and hides all socket related communication from all the other modules.
Currently the CoreServer builds up a one master-multiple slave scenario (this is one of the easiest to implement), but since it is shadowed from all the other modules, it could be modified for any other topology: virtual token ring, or others.
When a data package arrives into the Coreserver, it is handled to the UniCore.
UniCore is the “main processor” for the node: it checks the parametric of the data block to be sure that everything is right, could tag ACL on it then – if node is a master – processed according the internal rules. If the output has anything related to the local slots (plugins, GUI elements), then the package is passed to the Slotter.
The Slooter is the actual interfacing module between the node and the loaded plugins and preset elements (whether they are GUI or not). All the elements are connected to a slot (hence the name “Slotter”) and they are communicating over that one. For example, if you add a new I2C board to a node, it connects to a slot. Also, adding a GUI push button to the HUD is connected to a slot.
Then a minimal rule is needed to connect the state of that GUI button to the I2C relay panel.