Transformation Engine API (south side)
Initialization of a data client plugin

Each data client shared library represents one plugin. One plugin may be responsible for multiple data client instances of (possibly) different type. Which type of data client is to be created is defined in the configuration. This configuration is passed to a call to tek_sa_data_client_plugin::data_client_new.

After loading the shared library the TEK calls the main initialization function with the fixed name load_plugin and a signature of tek_sa_load_plugin_fn . This function creates a new singleton instance of tek_sa_data_client_plugin and is expected to save the given TEK api struct.

Using the created tek_sa_data_client_plugin, the TEK calls its tek_sa_data_client_plugin::data_client_new method for each configuration.

Each data client then is initialized with calls to tek_sa_data_client::register_features and tek_sa_data_client::connect.

tek_sa_data_client::register_features should do all registration tasks which are possible without a connection to the hardware.

tek_sa_data_client::connect should connect to the hardware and register all new fields, types etc. Additionally it may happen that the capabilities of the data client change after connecting because more information about the hardware are known. Therefore it is expected that a call to tek_sa_transformation_engine::update_capabilities will happen.