.. _data-provider-framework-page:

################################
Data Provider Framework
################################

**Copyright © 2025 by Ceetron AS**

The HOOPS CAE Data Provider Framework is a framework for writing data providers that can be plugged into applications based 
on HOOPS Envision. This includes HOOPS Envision Demo Analyzer and the RemoteModel server 
(CeeCloudServer) in |WebProductName|. The same plugin can be used both in cloud and desktop.

The DataProvider enables the user to provide the following data based on a given ModelKey:

-   Meta data about the given model: Number of states, geometries, results, sets
-   CAE model with elements and nodes
-   Results: Scalar, Vector, Displacements and Tensor (Stress and Strain)
-   Rigid body transformations
-   Element sets

The DataProvider also supports communicating updated data to the host application. This is done via the 
:func:`pollForChanges() <CDPDataProvider::pollForChanges>` method which will be called at regular intervals by host 
applications that have polling support. This methods allows for notifying the host 
application that data has changed (using the :class:`CDPChangeNotifications` interface), and the host will then ask for 
the updated data whenever needed.

The following modifications are supported:

-   Results: Modified, added and deleted
-   States: Modified meta data (name and reference value), added and deleted
-   Geometry: Modified

Finally, there is way to communicate with the data provider from the client (web) or host (desktop) application. By 
implementing the :func:`handleClientRequest() <CDPDataProvider::handleClientRequest>` method a data provider can respond 
to queries, modify the data or do some other custom operation. As with 
:func:`pollForChanges() <CDPDataProvider::pollForChanges>`, there is a mechanism to notify the host that the data has 
changed, as well as communicate custom data back to the client (via the :class:`CDPClientResponse` interface).

**Distribution Content**

To get access to the data provider framework, download the "|ProductName|" from 
https://developer.techsoft3d.com. The data provider framework is found in the **DataProviderFramework** folder in the 
distribution. The data provider framework is free to download and use, and is provided as source code so you can compile 
with your favorite compiler and settings.

-   CMakeLists.txt: Main CMake file (used for building the framework and example apps).
-   DataProviderHostLib: Library used by host applications to interface with data providers, e.g. example applications, 
    |WebProductName| and Envision Analyzer Desktop.
-   DataProviderPlugin: Header only library defining the interfaces needed for developing a plugin. A custom plugin has 
    no external dependencies (not depending on DataProviderHostLib).
-   ExampleApps: A TestDriver for interrogating and validating a plugin with a given model key.
-   ExamplePlugins: MinimalPlugin: A small example showing how to create a plugin.

**Supported Platforms**

HOOPS CAE Data Provider Framework supports most compilers on most platforms. It has been tested on:

-   **Windows**: Libraries compiled with VS2019 (142 toolset), which will work in VS2019 and VS2022.
-   **Linux**: Libraries compiled with Rocky 8.9 using glibc 2.28 and gcc 8.5.
-   **MacOS**: MacOS 10.14, 10.15, Xcode 10 and 11

**For further information please contact us** |br|
URL: https://www.techsoft3d.com |br|
Support: support@techsoft3d.com

-----------------------------------------------

All Rights Reserved. No part of this documentation or the accompanying source code shall be reproduced, stored in a 
retrieval system or transmitted by any means without written permission from the publisher.

.. toctree::
    :caption: Frameworks
    :hidden:

    Introduction <self>
    programming-guide
    change-log
    API Reference </api-dp/classes>
