The Server Object and its containing Objects and Variables are built in a way that the information can be gained in several ways, suitable for different kinds of clients having different requirements. Annex A gives an overview of the design decisions made in providing the information in that way, and discusses the pros and cons of the different approaches. Figure 8 gives an overview of the containing Objects and Variables of the diagnostic information of the Server Object and where the information can be found.
The SessionsDiagnosticsSummary Object contains one Object per session and a Variable with an array with one entry per session. This array is of a complex DataType holding the diagnostic information about the session. Each Object representing a session references a complex Variable containing the information about the session using the same DataType as the array containing information about all sessions. Such a Variable also exposes all its information as Variables with simple DataTypes containing the same information as in the complex DataType. Not shown in Figure 8 is the security-related information per session, which follows the same rules.
The Server provides an array with an entry per subscription containing diagnostic information about this subscription. Each entry of this array is also exposed as a complex Variable with Variables for each individual value. Each Object representing a session also provides such an array, but providing the subscriptions of the session.
The arrays containing information about the sessions or the subscriptions may be of different length for different connections with different user credentials since not all users may see all entries of the array. That also implies that the length of the array may change if the user is impersonated. Therefore clients that subscribe to a specific index range may get unexpected results.