Opc.Ua.Server.MasterNodeManager.GetManagerHandle C# (CSharp) Method

GetManagerHandle() public method

Returns node handle and its node manager.
public GetManagerHandle ( NodeId nodeId, INodeManager &nodeManager ) : object
nodeId NodeId
nodeManager INodeManager
return object
        public virtual object GetManagerHandle(NodeId nodeId, out INodeManager nodeManager)
        {
            nodeManager = null;
            object handle = null;

            // null node ids have no manager.
            if (NodeId.IsNull(nodeId))
            {
                return null;
            }

            // use the namespace index to select the node manager.
            int index = nodeId.NamespaceIndex;

            lock (m_namespaceManagers)
            {
                // check if node managers are registered - use the core node manager if unknown.
                if (index >= m_namespaceManagers.Length || m_namespaceManagers[index] == null)
                {
                    handle = m_nodeManagers[1].GetManagerHandle(nodeId);

                    if (handle != null)
                    {
                        nodeManager = m_nodeManagers[1];
                        return handle;
                    }

                    return null;
                }

                // check each of the registered node managers.
                INodeManager[] nodeManagers = m_namespaceManagers[index];

                for (int ii = 0; ii < nodeManagers.Length; ii++)
                {
                    handle = nodeManagers[ii].GetManagerHandle(nodeId);

                    if (handle != null)
                    {
                        nodeManager =  nodeManagers[ii];
                        return handle;
                    }
                }
            }

            // node not recognized.
            return null;
        }