C++ Based OPC UA Client/Server/PubSub SDK
Internal Client

The Server SDK provides an internal client API that can be used to retrieve information provided by the server. For example, the server can contain a history module that monitors variables to be able to historize value changes.

The interface is provided by the class ServerManager. It is using the information already provided for OPC UA Clients. There are no changes required in the data integration modules implementing the interfaces like NodeManager and IOManager.

An example of the use for internal monitoring is provided in the Getting Started Server Lesson 7 Step 4: Implement Internal Historizing.

The functionality provided by the internal client includes:

Creating a Session

All access to server information requires a Session to be able to restrict access to information to users with the appropriate rights. The Sessions are normally created by the OPC UA Clients connected to the Server.

Therefore such a Session must be created also by Server modules acting as internal Client. The function ServerManager::createInternalSession can be used to create such a Session. Sample code is provided with the documentation of ServerManager::createInternalSession.

It may be enough to create only one internal session with maximum user rights to be used in all internal client calls. But it may also be necessary to restrict access to information in internal modules. This would require the creation of different sessions with the appropriate rights for a module.


The internal Browse call may be used to navigate through the type system of the Server or to explore available data for a special module inside the server.

The ServerManager::browse provides different overloaded versions with typical simplifications. Sample code is included for several of these functions in the class documentation.


The internal Read call may be used to read semantic information for nodes processed in other modules, like a data type of a variable monitored by a history module.

The ServerManager::read provides different overloaded versions.


The internal Write call may be used to update Variable Values based on calculations done in other modules or based on data received in other modules of the Server.

The ServerManager::write provides different overloaded versions.

Create Monitored Items

The internal monitoring may be used to monitor Variables for Value changes to store such changes in a history or to do calculations or alarming in additional Server modules.

Data monitored items are created with ServerManager::createDataMonitoredItems and are deleted with ServerManager::deleteMonitoredItems.

An example of the use for internal monitoring is provided in the Getting Started Server Lesson 7 Step 4: Implement Internal Historizing.