Following the design philosophy of the framework, we now introduce a few of the common and core data structures. Theses data structures i) manifest how the design philosophy is carried; and ii) are among the core building blocks of our telemonitoring framework.
Encapsulators are queues with extended functionality. As the name suggests, encapsulators are used to encapsulate data in them, they let the telemonitoring system store data. These encapsulators enable the telemonitoring system to get callbacks on the event that a data point is added or removed, the encapsulator became empty or full and more. Finally, encapsulators are thread-safe.
Backup cabinets allow the telemonitoring system to atomically backup and restore backable objects. Encapsulators are implemented to be backables and therefore enjoy the support of our implemented backup cabinets.
The communication with the telemonitoring server is abstracted through job constructs. A job is an abstract object that describes a chore that the client wishes the server to perform on their behalf. For concreteness, consider the following scenario. The client node collected some data that it wishes to transmit to the server. The client can package the data in a data job (todo: link it properly) that it submits to the server. The server will receive the job through the communication protocol (todo: link it properly) and can process and/or store the data as necessary. Jobs are backable objects and therefore also enjoy the support of our implemented backup cabinets through encapsulators.
We will later introduce the server handler that allows client nodes to communicate easily with the telemonitoring server. Among other functionalities, the server handler allows the client to submit jobs to the server. The server can notify the client once these jobs are delivered to the server through a callback as defined in ServerJobListenerInterface. For more information, refer to the tutorial on server handlers.