/* ======================================================================== * Copyright (c) 2005-2025 The OPC Foundation, Inc. All rights reserved. * * OPC Foundation MIT License 1.00 * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, * copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following * conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. * * The complete license agreement can be found here: * http://opcfoundation.org/License/MIT/1.00/ * ======================================================================*/ namespace Opc.Ua.Server { /// /// Stores information about a NodeId specified by the client. /// /// /// A NodeHandle is created when GetManagerHandle is called and will only contain /// information found by parsing the NodeId. The ValidateNode method is used to /// verify that the NodeId refers to a real Node and find a NodeState object that /// can be used to access the Node. /// public class NodeHandle { /// /// Initializes a new instance of the class. /// public NodeHandle() { } /// /// Initializes a new instance of the class. /// /// The node id. /// The node. public NodeHandle(NodeId nodeId, NodeState node) { NodeId = nodeId; Validated = true; Node = node; } /// /// The NodeId provided by the client. /// public NodeId NodeId { get; set; } /// /// The parsed identifier (must not be null if Validated == False). /// public object ParsedNodeId { get; set; } = null!; /// /// A unique string identifier for the root of a complex object tree. /// public NodeId RootId { get; set; } /// /// A path to a component within the tree identified by the root id. /// public string ComponentPath { get; set; } = null!; /// /// An index associated with the handle. /// /// /// This is used to keep track of the position in the complete list of Nodes provided by the Client. /// public int Index { get; set; } /// /// Whether the handle has been validated. /// /// /// When validation is complete the Node property must have a valid object. /// public bool Validated { get; set; } /// /// An object that can be used to access the Node identified by the NodeId. /// /// /// Not set until after the handle is validated. /// public NodeState Node { get; set; } = null!; /// /// An object that can be used to manage the items which are monitoring the node. /// public MonitoredNode2 MonitoredNode { get; set; } = null!; } }