Opc.Ua.Com.Server.ComHdaProxy.ReadAttributes C# (CSharp) Method

ReadAttributes() private method

Reads the historical or current value for attributes.
private ReadAttributes ( Session session, ExtensionObject extension, List requests, bool releaseContinuationPoints ) : bool
session Opc.Ua.Client.Session
extension ExtensionObject
requests List
releaseContinuationPoints bool
return bool
        private bool ReadAttributes(
            Session session,
            ExtensionObject extension,
            List<HdaReadRequest> requests,
            bool releaseContinuationPoints)
        {
            ReadRawModifiedDetails details = extension.Body as ReadRawModifiedDetails;

            if (details == null)
            {
                return false;
            }

            // check if reading historical values.
            if (details.EndTime != DateTime.MinValue)
            {
                return ReadNext(session, extension, requests, false);
            }

            HdaItemHandle handle = null;
            List<uint> attributeIds = new List<uint>();
            List<int> indexes = new List<int>();
            
            // build the list of requests.
            for (int ii = 0; ii < requests.Count; ii++)
            {
                HdaReadRequest request = requests[ii];

                if (request.Error < 0)
                {
                    continue;
                }

                // handle should be the same for all.
                if (handle == null)
                {
                    handle = request.Handle;
                }

                attributeIds.Add(request.AttributeId);
                indexes.Add(ii);
            }

            // check if nothing to do.
            if (attributeIds.Count == 0)
            {
                return false;
            }

            // reads the current values for all requested attributes.
            DaValue[] values = m_itemManager.ReadCurrentValues(session, handle, attributeIds.ToArray());

            // build the list of requests.
            for (int ii = 0; ii < attributeIds.Count; ii++)
            {
                HdaReadRequest request = requests[indexes[ii]];

                if (values[ii].Error < 0)
                {
                    request.Error = values[ii].Error;
                }
                else
                {
                    request.Values = new List<DaValue>();
                    request.Values.Add(values[ii]);
                }

                request.IsComplete = true;
            }
                
            return false;
        }
        #endregion

Same methods

ComHdaProxy::ReadAttributes ( System.DateTime startTime, System.DateTime endTime, int serverHandle, uint attributeIds ) : List
ComHdaProxy::ReadAttributes ( int transactionId, System.DateTime startTime, System.DateTime endTime, int serverHandle, uint attributeIds, int &cancelId ) : int[]