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

CreateReadRequests() private method

Creates the read requests.
private CreateReadRequests ( Session session, System.DateTime startTime, System.DateTime endTime, int serverHandle, uint attributeIds, ReadRawModifiedDetails details ) : List
session Opc.Ua.Client.Session
startTime System.DateTime
endTime System.DateTime
serverHandle int
attributeIds uint
details ReadRawModifiedDetails
return List
        private List<HdaReadRequest> CreateReadRequests(
            Session session,
            DateTime startTime,
            DateTime endTime,
            int serverHandle, 
            uint[] attributeIds, 
            ReadRawModifiedDetails details)
        {
            if (startTime == DateTime.MinValue)
            {
                throw ComUtils.CreateComException(ResultIds.E_INVALIDARG);
            }

            // check for the special case where current values are requested.
            if (endTime == DateTime.MinValue && startTime.AddSeconds(10) < DateTime.UtcNow)
            {
                throw ComUtils.CreateComException(ResultIds.E_INVALIDARG);
            }

            // specify the parameters for the request.
            details.StartTime = startTime;
            details.EndTime = endTime;
            details.IsReadModified = false;
            details.NumValuesPerNode = 0;
            details.ReturnBounds = true;
            
            // look up server handle.
            HdaItemHandle handle = m_itemManager.LookupHandle(serverHandle);

            if (handle == null)
            {
                throw ComUtils.CreateComException(ResultIds.E_INVALIDHANDLE);
            }
            
            // get the node ids for the requested attributes.
            NodeId[] nodeIds = null;
            
            int[] errors = m_itemManager.GetAttributeHistoryNodeIds(
                session, 
                handle, 
                attributeIds,
                out nodeIds);

            // build the list of requests.
            List<HdaReadRequest> requests = new List<HdaReadRequest>();

            for (int ii = 0; ii < attributeIds.Length; ii++)
            {
                HdaReadRequest request = new HdaReadRequest();
                requests.Add(request);

                // initialize request.
                request.Handle = handle;
                request.AttributeId = attributeIds[ii];

                if (request.Handle == null)
                {
                    request.Error = ResultIds.E_INVALIDHANDLE;
                    continue;
                }

                request.ClientHandle = request.Handle.ClientHandle;
                
                // check for errors.
                if (errors[ii] != ResultIds.S_OK)
                {
                    request.Error = errors[ii];
                    request.IsComplete = true;
                    continue;
                }

                request.NodeId = nodeIds[ii];
            }

            return requests;
        }

Same methods

ComHdaProxy::CreateReadRequests ( Session session, System.DateTime startTime, System.DateTime endTime, double resampleInterval, int serverHandles, uint aggregateIds, ReadProcessedDetails details ) : List
ComHdaProxy::CreateReadRequests ( Session session, System.DateTime startTime, System.DateTime endTime, int serverHandles, ReadRawModifiedDetails details ) : List
ComHdaProxy::CreateReadRequests ( Session session, System.DateTime startTime, System.DateTime endTime, uint numValues, bool returnBounds, int serverHandles, ReadRawModifiedDetails details ) : List
ComHdaProxy::CreateReadRequests ( Session session, System.DateTime timestamps, int serverHandles, ReadAtTimeDetails details ) : List