ADTF
3.18.2
|
One of the main basic agreements in ADTF is code and binary compatibility in a major version.
This is not very easy to handle in case we have to change or extend our API for your needs, bugfixes or feature requests.
For each ADTF minor release, there will be a minor version namespace. Each interface created in this minor version will be packed into the corresponding namespace. This means, we do not change interfaces, we extend or replace them by creating a same titled interface in the new namespace and set this as new default.
For example:
This means we have two interfaces:
adtf::group::ant::IUsedInterface
adtf::group::bat::IUsedInterface
adtf::group::bat::IUsedInterface
derives from adtf::group::ant::IUsedInterface
and extend the functionality of adtf::ant::IUsedInterface
with DoSomethingElse()
.
Finally we set the current version to adtf::group::bat::IUsedInterface
, this means if you are implementing and deriving from adtf::group::IUsedInterface
(without explicit versioned namespace), you will automatic use the current one, so in this case from namespace bat
.
There is only one use case to explicit use an older interface:
Here is an overview which versioned namespace belongs to which ADTF version:
If you are using these interfaces within your components (Filter, System Service, Streaming Service), which are packed into a adtfplugin for delivery, the ADTF Plugin Description Generator requires some information for dependency handling (Setup dependencies between components).
This means you have to specify which interfaces you are using / must be loaded (REQUIRE_INTERFACE) and which are implemented / delivered within your component (PROVIDE_INTERFACE). These information are exported to the corresponding plugindescription of your adtfplugin, usually for use within ADTF Configuration Editor as you might already know.
As mentioned above you will primary use the actual interface without explicit versioned namespace (adtf::group::IUsedInterface
) within your implementation. You will follow this coding rule also
for set up the adtfplugin dependency using REQUIRE_INTERFACE. But if you want to tell the ADTF Plugin Description Generator which kind of interfaces you are implementing, you have to list them explicit and with full version namespace for each by using PROVIDE_INTERFACE - as well as you will derive and override within your code. For example: