InventoryService

One per node: builds `NodeInfo`, measures the machine once per hardware fingerprint, and publishes `NodeLoad` about once a second (work-placement §WPN-9).

Inherits QObject

In the namespace inventory. Declared in src/libs/libinventory/inventory/InventoryService.hpp.

Detailed description

At construction it holds a quick `NodeInfo` (no GPU probe, nothing that can block), so a caller has the core count and memory at once. `start()` moves every further read onto one thread: the full probe, then a `NodeLoad` per interval. The measurements of §WPN-6 run on a thread of their own, at idle priority, once per fingerprint, and stop when work arrives (`setWorkPending`); the result is kept through the two callbacks of `Options`, which a node points at its settings.

One sampler thread for the node and its Monitor screen

The Monitor screen's `ResourceMonitor` draws every column of a full `SampleSet`: processes, network, page faults and the memory range of a tick. It takes them from this service's thread as a sample client (work-placement §WPI-10), so the node runs one sampler, not two. A client asks for a set (`requestSampleSet`) and gets it through `sampleSetReady`. Each set it asks for also gives a `NodeLoad`, so while a client draws, the interval sample of this service does not run. While at least one client is active, the sampler also reads processes and keeps the memory range of §CG-C; with no active client it does neither, because `NodeLoad` reads neither.

In this section