Opc.Ua.Com.Client.ComHdaClientNodeManager.HistoryReadAttribute C# (CSharp) Method

HistoryReadAttribute() private method

Reads the history of an HDA attribute.
private HistoryReadAttribute ( ServerSystemContext context, ComHdaClient client, ReadRawModifiedDetails details, TimestampsToReturn timestampsToReturn, HistoryReadValueId nodeToRead, HdaParsedNodeId parsedNodeId, HistoryReadResult result ) : ServiceResult
context Opc.Ua.Server.ServerSystemContext
client ComHdaClient
details ReadRawModifiedDetails
timestampsToReturn TimestampsToReturn
nodeToRead Opc.Ua.HistoryReadValueId
parsedNodeId HdaParsedNodeId
result HistoryReadResult
return Opc.Ua.ServiceResult
        private ServiceResult HistoryReadAttribute(
            ServerSystemContext context,
            ComHdaClient client,
            ReadRawModifiedDetails details,
            TimestampsToReturn timestampsToReturn,
            HistoryReadValueId nodeToRead,
            HdaParsedNodeId parsedNodeId,
            HistoryReadResult result)
        {
            // create the request or load it from a continuation point.
            HdaHistoryReadAttributeRequest request = null;

            if (nodeToRead.ContinuationPoint == null)
            {
                // create a new request.
                request = new HdaHistoryReadAttributeRequest(parsedNodeId.RootId, parsedNodeId.AttributeId, details, nodeToRead);

                // fetch all of the data at once.
                result.StatusCode = client.ReadAttributeHistory(request);
            }
            else
            {
                request = LoadContinuationPoint(context, nodeToRead.ContinuationPoint) as HdaHistoryReadAttributeRequest;

                if (request == null)
                {
                    return StatusCodes.BadContinuationPointInvalid;
                }
            }

            // select a subset of the results.
            if (StatusCode.IsGood(result.StatusCode))
            {
                request.Results = new DataValueCollection();
                request.GetHistoryResults(context, nodeToRead, request.Results);
            }
            
            // fill in the results.
            if (request.Results != null)
            {
                HistoryData data = new HistoryData();                
                data.DataValues = request.Results;
                result.HistoryData = new ExtensionObject(data);
            }

            // create a new continuation point.
            if (!request.Completed)
            {
                result.ContinuationPoint = SaveContinuationPoint(context, request);
            }

            return result.StatusCode;
        }