Opc.Ua.Server.CoreNodeManager.AddReference C# (CSharp) Method

AddReference() public method

Adds a reference between two existing nodes.
public AddReference ( NodeId sourceId, NodeId referenceTypeId, bool isInverse, NodeId targetId, bool bidirectional ) : ServiceResult
sourceId NodeId
referenceTypeId NodeId
isInverse bool
targetId NodeId
bidirectional bool
return ServiceResult
        public ServiceResult AddReference(
            NodeId sourceId,
            NodeId referenceTypeId,
            bool   isInverse,
            NodeId targetId,
            bool   bidirectional)
        {
            try
            {
                m_lock.Enter();

                // find source.
                ILocalNode source = GetManagerHandle(sourceId) as ILocalNode;

                if (source == null)
                {
                    return StatusCodes.BadParentNodeIdInvalid;
                }
                                
                // add reference from target to source.      
                if (bidirectional)
                {              
                    // find target.
                    ILocalNode target = GetManagerHandle(targetId) as ILocalNode;

                    if (target == null)
                    {
                        return StatusCodes.BadNodeIdUnknown;
                    }
                 
                    // ensure the reference is valid.
                    ValidateReference(source, referenceTypeId, isInverse, target.NodeClass);

                    // add reference from target to source.
                    AddReferenceToLocalNode(target, referenceTypeId, !isInverse, sourceId, false);
                }
                
                // add reference from source to target.                
                AddReferenceToLocalNode(source, referenceTypeId, isInverse, targetId, false);

                return null;
            }
            finally
            {
                m_lock.Exit();
            } 
        }
        /// <summary>

Same methods

CoreNodeManager::AddReference ( ILocalNode source, NodeId referenceTypeId, bool isInverse, ExpandedNodeId targetId ) : void
CoreNodeManager::AddReference ( ILocalNode source, NodeId referenceTypeId, bool isInverse, ILocalNode target, bool bidirectional ) : void