Skip to content

Commit fcc3b74

Browse files
authored
initialize predefined nodes in constructor (#2966)
1 parent f7815c8 commit fcc3b74

File tree

1 file changed

+13
-29
lines changed

1 file changed

+13
-29
lines changed

Libraries/Opc.Ua.Server/Diagnostics/CustomNodeManager.cs

Lines changed: 13 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,8 @@ protected CustomNodeManager2(
107107
// create the table of monitored nodes.
108108
// these are created by the node manager whenever a client subscribe to an attribute of the node.
109109
m_monitoredNodes = new NodeIdDictionary<MonitoredNode2>();
110+
111+
m_predefinedNodes = new NodeIdDictionary<NodeState>();
110112
}
111113
#endregion
112114

@@ -129,7 +131,7 @@ protected virtual void Dispose(bool disposing)
129131
{
130132
lock (Lock)
131133
{
132-
foreach (NodeState node in m_predefinedNodes?.Values)
134+
foreach (NodeState node in m_predefinedNodes.Values)
133135
{
134136
Utils.SilentDispose(node);
135137
}
@@ -321,7 +323,7 @@ protected virtual NodeHandle IsHandleInNamespace(object managerHandle)
321323
public NodeState Find(NodeId nodeId)
322324
{
323325
NodeState node = null;
324-
if (m_predefinedNodes?.TryGetValue(nodeId, out node) == true)
326+
if (m_predefinedNodes.TryGetValue(nodeId, out node) == true)
325327
{
326328
return node;
327329
}
@@ -349,11 +351,6 @@ public NodeId CreateNode(
349351

350352
lock (Lock)
351353
{
352-
if (m_predefinedNodes == null)
353-
{
354-
m_predefinedNodes = new NodeIdDictionary<NodeState>();
355-
}
356-
357354
instance.ReferenceTypeId = referenceTypeId;
358355

359356
NodeState parent = null;
@@ -390,7 +387,7 @@ public bool DeleteNode(
390387
List<LocalReference> referencesToRemove = new List<LocalReference>();
391388

392389
NodeState node = null;
393-
if (m_predefinedNodes?.TryGetValue(nodeId, out node) != true)
390+
if (m_predefinedNodes.TryGetValue(nodeId, out node) != true)
394391
{
395392
return false;
396393
}
@@ -477,11 +474,6 @@ public virtual void LoadPredefinedNodes(
477474
string resourcePath,
478475
IDictionary<NodeId, IList<IReference>> externalReferences)
479476
{
480-
if (m_predefinedNodes == null)
481-
{
482-
m_predefinedNodes = new NodeIdDictionary<NodeState>();
483-
}
484-
485477
// load the predefined nodes from an XML document.
486478
NodeStateCollection predefinedNodes = new NodeStateCollection();
487479
predefinedNodes.LoadFromResource(context, resourcePath, assembly, true);
@@ -544,11 +536,6 @@ protected virtual NodeState AddBehaviourToPredefinedNode(ISystemContext context,
544536
/// </summary>
545537
protected virtual void AddPredefinedNode(ISystemContext context, NodeState node)
546538
{
547-
if (m_predefinedNodes == null)
548-
{
549-
m_predefinedNodes = new NodeIdDictionary<NodeState>();
550-
}
551-
552539
// assign a default value to any variable in namespace 0
553540
if (node is BaseVariableState nodeStateVar)
554541
{
@@ -614,7 +601,7 @@ protected virtual void RemovePredefinedNode(
614601
NodeState node,
615602
List<LocalReference> referencesToRemove)
616603
{
617-
if (m_predefinedNodes?.TryRemove(node.NodeId, out _) != true)
604+
if (m_predefinedNodes.TryRemove(node.NodeId, out _) != true)
618605
{
619606
return;
620607
}
@@ -687,7 +674,7 @@ protected virtual void OnNodeRemoved(NodeState node)
687674
/// <param name="externalReferences">A list of references to add to external targets.</param>
688675
protected virtual void AddReverseReferences(IDictionary<NodeId, IList<IReference>> externalReferences)
689676
{
690-
foreach (NodeState source in m_predefinedNodes?.Values)
677+
foreach (NodeState source in m_predefinedNodes.Values)
691678
{
692679
IList<IReference> references = new List<IReference>();
693680
source.GetReferences(SystemContext, references);
@@ -855,15 +842,12 @@ public NodeState FindPredefinedNode(NodeId nodeId, Type expectedType)
855842
/// </summary>
856843
public virtual void DeleteAddressSpace()
857844
{
858-
if (m_predefinedNodes != null)
859-
{
860-
var nodes = m_predefinedNodes.Values.ToArray();
861-
m_predefinedNodes.Clear();
845+
var nodes = m_predefinedNodes.Values.ToArray();
846+
m_predefinedNodes.Clear();
862847

863-
foreach (NodeState node in nodes)
864-
{
865-
Utils.SilentDispose(node);
866-
}
848+
foreach (NodeState node in nodes)
849+
{
850+
Utils.SilentDispose(node);
867851
}
868852
}
869853

@@ -894,7 +878,7 @@ protected virtual NodeHandle GetManagerHandle(ServerSystemContext context, NodeI
894878
}
895879

896880
NodeState node = null;
897-
if (m_predefinedNodes?.TryGetValue(nodeId, out node) == true)
881+
if (m_predefinedNodes.TryGetValue(nodeId, out node) == true)
898882
{
899883
var handle = new NodeHandle {
900884
NodeId = nodeId,

0 commit comments

Comments
 (0)