ANSI C Based OPC UA Client/Server SDK  1.9.0.430
UaServerContinuationPoint

Functions

UaServer_ContinuationPointInfo * UaServer_ContinuationPointInfo_Create (UaServer_ContinuationPointType a_Type)
 Create new ContinuationPointInfo. More...
 
OpcUa_StatusCode UaServer_ContinuationPointInfo_Delete (UaServer_ContinuationPointInfo *a_pContinuationPointInfo)
 Delete the ContinuationPointInfo. More...
 
OpcUa_StatusCode UaServer_ContinuationPointInfo_InitCPData (UaServer_ContinuationPointInfo *a_pContinuationPointInfo)
 Set the ContinuationPoint data of the ContinuationPointInfo. More...
 
OpcUa_StatusCode UaServer_ContinuationPointInfo_AddToList (UaServer_ContinuationPointInfo *a_pContinuationPointInfo, UaServer_PublicSession *a_pSession)
 Add the ContinuationPointInfo to the session's list. More...
 
OpcUa_StatusCode UaServer_ContinuationPointInfo_RemoveFromList (UaServer_ContinuationPointInfo *a_pContinuationPointInfo, UaServer_PublicSession *a_pSession)
 Remove the ContinuationPointInfo from the session's list. More...
 

Detailed Description

For providers only using the OpcUa_BaseNodes of the SDK there is no need to use any of the functions described in this module. All necessary work is done by the SDK, the provider only needs to call UaServer_BrowseInternal in its BrowseAsync implementation.

For providers implementing BrowseAsync themselves without using the SDK's UaServer_BrowseInternal helper function, it will get necessary to create ContinuationPoints. Following code example describes how to create ContinuationPoints inside a provider:

// Do the browsing, fill the results, check if a ContinuationPoint has to be created
UaServer_ContinuationPointInfo *pCPInfo = OpcUa_Null;
// Check if a ContinuationPointInfo already exists
if (a_pBrowseCtx->pContinuationPointInfo == OpcUa_Null)
{
// Create a new UaServer_ContinuationPointInfo of type ContinuationPointType_Browse
pCPInfo = UaServer_ContinuationPointInfo_Create(ContinuationPointType_Browse);
// Create the actual ContinuationPoint sent to the client
// Remember the BrowseCall for the BrowseNext call the client will issue
OpcUa_BrowseDescription_CopyTo(&pRequest->NodesToBrowse[a_iNodeIndex], (OpcUa_BrowseDescription*)pCPInfo->pDescription);
pCPInfo->RequestedMaxReferencesPerNode = pRequest->RequestedMaxReferencesPerNode;
// Add the ContinuationPointInfo to the Session's list of ContinuationPointInfos
uStatusTemp = UaServer_ContinuationPointInfo_AddToList(pCPInfo, (UaServer_PublicSession*)pBrowseContext->pSession);
if (OpcUa_IsBad(uStatusTemp))
{
pCPInfo = OpcUa_Null;
}
}
else
{
pCPInfo = a_pBrowseCtx->pContinuationPointInfo;
}
if (pCPInfo != OpcUa_Null)
{
// Set the offset for the next BrowseNext call
a_pBrowseCtx->pContinuationPointInfo->NextTargetIndex = nextTargetIndex;
// Set the actual ContinuationPoint in the browse response
OpcUa_ByteString_CopyTo(a_pBrowseCtx->pContinuationPointInfo->pContinuationPoint,
&pResponse->Results[a_iNodeIndex].ContinuationPoint);
}
else
{
// Error handling
}

Function Documentation

OpcUa_StatusCode UaServer_ContinuationPointInfo_AddToList ( UaServer_ContinuationPointInfo *  a_pContinuationPointInfo,
UaServer_PublicSession a_pSession 
)

Add the ContinuationPointInfo to the session's list.

Note
This function is thread-safe.
Parameters
a_pContinuationPointInfopointer to the ContinuationPointInfo.
a_pSessionpointer to the Session to add the ContinuationPointInfo to.
UaServer_ContinuationPointInfo* UaServer_ContinuationPointInfo_Create ( UaServer_ContinuationPointType  a_Type)

Create new ContinuationPointInfo.

Parameters
a_Typethe type of the new ContinuationPointInfo.
Returns
the new ContinuationPointInfo
OpcUa_StatusCode UaServer_ContinuationPointInfo_Delete ( UaServer_ContinuationPointInfo *  a_pContinuationPointInfo)

Delete the ContinuationPointInfo.

Parameters
a_pContinuationPointInfopointer to the ContinuationPointInfo.
OpcUa_StatusCode UaServer_ContinuationPointInfo_InitCPData ( UaServer_ContinuationPointInfo *  a_pContinuationPointInfo)

Set the ContinuationPoint data of the ContinuationPointInfo.

Parameters
a_pContinuationPointInfopointer to the ContinuationPointInfo.
OpcUa_StatusCode UaServer_ContinuationPointInfo_RemoveFromList ( UaServer_ContinuationPointInfo *  a_pContinuationPointInfo,
UaServer_PublicSession a_pSession 
)

Remove the ContinuationPointInfo from the session's list.

Note
This function is thread-safe.
Parameters
a_pContinuationPointInfopointer to the ContinuationPointInfo.
a_pSessionpointer to the Session from which to remove the ContinuationPointInfo.