A ContinuationPointis used to pause a Browse, QueryFirstor HistoryReadoperation and allow it to be restarted later by calling BrowseNext, QueryNextor HistoryRead.Operations are paused when the number of results found exceeds the limits set by either the Clientor the Server.
The Clientspecifies the maximum number of results per operation in the request message. A Servershall not return more than this number of results but it may return fewer results. The Serverallocates a ContinuationPointif there are more results to return.
Serversshall support at least one ContinuationPointper Session. Serversspecify a maximum number of ContinuationPointsper Sessionin the ServerCapabilities Objectdefined in OPC 10000-5. ContinuationPointsremain active until the Clientretrieves the remaining results, the Clientreleases the ContinuationPointor the Sessionis closed. A Servershall automatically free ContinuationPointsfrom prior requests from a Sessionif they are needed to process a new request from this Session. The Serverreturns a Bad_ContinuationPointInvaliderror if a Clienttries to use a ContinuationPointthat has been released. A Clientcan avoid this situation by completing paused operations before starting new operations.
Requests will often specify multiple operations that may or may not require a ContinuationPoint. A Servershall process the operations until it uses the maximum number of continuation points in this response. Once that happens the Servershall return a Bad_NoContinuationPoints error for any remaining operations. A Clientcan avoid this situation by sending requests with a number of operations that do not exeed the maximum number of ContinuationPointsper Sessiondefined for the Servicein the ServerCapabilities Objectdefined in OPC 10000-5.
A Clientrestarts an operation by passing the ContinuationPointback to the Server. Servershould always be able to reuse the ContinuationPointprovided so Serversshall never return Bad_NoContinuationPoints error when continuing a previously halted operation.