We reduced the size of the public API of the
IService interface, which is undoubtedly the most used in Sight.
First, the data management responsibility has been moved to the
IHasData interface and now holds the getters and setters for inputs, in/outs and outputs.
Secondly, a significant part of the implementation of
IService methods has been moved to a pimpl in
The AppConfigManager was moved in the
detail namespace as well, so now the public API only exposes IAppConfigManager.
This refactor also finishes the migration of
data::ptr. Now the objects of services are only held in
data::ptr, the former input, inout and output maps of
IService were removed, which simplifies a lot the code. This also implies that services can no longer specify any data in the XML configuration that is not declared as
data::ptr. In this repository, only two services relied on the old behaviour
SConfigLauncher. The migration consisted in using a single declared group of objects (
data::ptr_vector<data::Object>) instead of multiple undeclared objects. Changes were brought in all XML configurations.
ObjectService registry refactor was also finished. Its role has been reduced because we no longer rely on it to store the relationship between services and objects. This responsibility is filled by the services themselves. So now, this registry only holds a global list of registered services. It has been renamed accordingly. Doing so, the
sight::service::registry namespace was removed, and the only other class that was there,
sight::service::registry::Proxy was moved to
sight::core::com::Proxy. Indeed, it has actually no dependency at all on services and is generic enough to be in the
Closes #995 (closed)
- CI tests should be sufficient
(Some interesting results, screenshots, perfs, ...)