Opc.Ua.Com.Server.ComDaBrowseCache.PrepareBrowseElementReadRequest C# (CSharp) Метод

PrepareBrowseElementReadRequest() приватный Метод

Prepares a read request for the browse element properties.
private PrepareBrowseElementReadRequest ( NodeId nodeId, ReferenceDescription>.Dictionary childrenByName, ReadValueIdCollection nodesToRead, NodeClass nodeClass, bool onlyEssentialProperties ) : int
nodeId NodeId The node id.
childrenByName ReferenceDescription>.Dictionary The children indexed by name.
nodesToRead ReadValueIdCollection The nodes to read.
nodeClass NodeClass The node class - passed only if all of the information in the ReferenceDescription is available.
onlyEssentialProperties bool If true the only properties essential for browing will be fetched.
Результат int
        private int PrepareBrowseElementReadRequest(
            NodeId nodeId,
            Dictionary<string, ReferenceDescription> childrenByName,
            ReadValueIdCollection nodesToRead,
            NodeClass nodeClass,
            bool onlyEssentialProperties)
        {
            int index = nodesToRead.Count;

            ReadValueId nodeToRead = new ReadValueId();

            if (nodeClass == NodeClass.Unspecified)
            {
                nodeToRead.NodeId = nodeId;
                nodeToRead.AttributeId = Attributes.NodeClass;
                nodesToRead.Add(nodeToRead);

                nodeToRead = new ReadValueId();
                nodeToRead.NodeId = nodeId;
                nodeToRead.AttributeId = Attributes.BrowseName;
                nodesToRead.Add(nodeToRead);

                nodeToRead = new ReadValueId();
                nodeToRead.NodeId = nodeId;
                nodeToRead.AttributeId = Attributes.DisplayName;
                nodesToRead.Add(nodeToRead);
            }

            if (!onlyEssentialProperties)
            {
                nodeToRead = new ReadValueId();
                nodeToRead.NodeId = nodeId;
                nodeToRead.AttributeId = Attributes.Description;
                nodesToRead.Add(nodeToRead);
            }

            // nothing more to fetch for objects.
            if (nodeClass == NodeClass.Object)
            {
                return index;
            }

            nodeToRead = new ReadValueId();
            nodeToRead.NodeId = nodeId;
            nodeToRead.AttributeId = Attributes.DataType;
            nodesToRead.Add(nodeToRead);

            nodeToRead = new ReadValueId();
            nodeToRead.NodeId = nodeId;
            nodeToRead.AttributeId = Attributes.ValueRank;
            nodesToRead.Add(nodeToRead);

            if (!onlyEssentialProperties)
            {
                nodeToRead = new ReadValueId();
                nodeToRead.NodeId = nodeId;
                nodeToRead.AttributeId = Attributes.MinimumSamplingInterval;
                nodesToRead.Add(nodeToRead);

                nodeToRead = new ReadValueId();
                nodeToRead.NodeId = nodeId;
                nodeToRead.AttributeId = Attributes.UserAccessLevel;
                nodesToRead.Add(nodeToRead);

                nodeToRead = new ReadValueId();
                nodeToRead.NodeId = nodeId;
                nodeToRead.AttributeId = Attributes.Value;
                nodesToRead.Add(nodeToRead);

                ReferenceDescription property = null;

                if (childrenByName.TryGetValue(Opc.Ua.BrowseNames.EURange, out property))
                {
                    nodeToRead = new ReadValueId();
                    nodeToRead.NodeId = (NodeId)property.NodeId;
                    nodeToRead.AttributeId = Attributes.Value;
                    nodeToRead.Handle = Opc.Ua.BrowseNames.EURange;
                    nodesToRead.Add(nodeToRead);
                }

                if (childrenByName.TryGetValue(Opc.Ua.BrowseNames.InstrumentRange, out property))
                {
                    nodeToRead = new ReadValueId();
                    nodeToRead.NodeId = (NodeId)property.NodeId;
                    nodeToRead.AttributeId = Attributes.Value;
                    nodeToRead.Handle = Opc.Ua.BrowseNames.InstrumentRange;
                    nodesToRead.Add(nodeToRead);
                }

                if (childrenByName.TryGetValue(Opc.Ua.BrowseNames.EngineeringUnits, out property))
                {
                    nodeToRead = new ReadValueId();
                    nodeToRead.NodeId = (NodeId)property.NodeId;
                    nodeToRead.AttributeId = Attributes.Value;
                    nodeToRead.Handle = Opc.Ua.BrowseNames.EngineeringUnits;
                    nodesToRead.Add(nodeToRead);
                }

                if (childrenByName.TryGetValue(Opc.Ua.BrowseNames.EnumStrings, out property))
                {
                    nodeToRead = new ReadValueId();
                    nodeToRead.NodeId = (NodeId)property.NodeId;
                    nodeToRead.AttributeId = Attributes.Value;
                    nodeToRead.Handle = Opc.Ua.BrowseNames.EnumStrings;
                    nodesToRead.Add(nodeToRead);
                }

                if (childrenByName.TryGetValue(Opc.Ua.BrowseNames.TrueState, out property))
                {
                    nodeToRead = new ReadValueId();
                    nodeToRead.NodeId = (NodeId)property.NodeId;
                    nodeToRead.AttributeId = Attributes.Value;
                    nodeToRead.Handle = Opc.Ua.BrowseNames.TrueState;
                    nodesToRead.Add(nodeToRead);
                }

                if (childrenByName.TryGetValue(Opc.Ua.BrowseNames.FalseState, out property))
                {
                    nodeToRead = new ReadValueId();
                    nodeToRead.NodeId = (NodeId)property.NodeId;
                    nodeToRead.AttributeId = Attributes.Value;
                    nodeToRead.Handle = Opc.Ua.BrowseNames.FalseState;
                    nodesToRead.Add(nodeToRead);
                }

                if (childrenByName.TryGetValue(Opc.Ua.BrowseNames.LocalTime, out property))
                {
                    nodeToRead = new ReadValueId();
                    nodeToRead.NodeId = (NodeId)property.NodeId;
                    nodeToRead.AttributeId = Attributes.Value;
                    nodeToRead.Handle = Opc.Ua.BrowseNames.LocalTime;
                    nodesToRead.Add(nodeToRead);
                }
            }

            return index;
        }