protected override NodeState AddBehaviourToPredefinedNode(ISystemContext context, NodeState predefinedNode)
{
BaseObjectState passiveNode = predefinedNode as BaseObjectState;
if (passiveNode == null)
{
MethodState passiveMethod = predefinedNode as MethodState;
if (passiveMethod == null)
{
return predefinedNode;
}
if (passiveMethod.NodeId == MethodIds.ConditionType_ConditionRefresh)
{
ConditionRefreshMethodState activeNode = new ConditionRefreshMethodState(passiveMethod.Parent);
activeNode.Create(context, passiveMethod);
// replace the node in the parent.
if (passiveMethod.Parent != null)
{
passiveMethod.Parent.ReplaceChild(context, activeNode);
}
activeNode.OnCall = OnConditionRefresh;
return activeNode;
}
return predefinedNode;
}
NodeId typeId = passiveNode.TypeDefinitionId;
if (!IsNodeIdInNamespace(typeId) || typeId.IdType != IdType.Numeric)
{
return predefinedNode;
}
switch ((uint)typeId.Identifier)
{
case ObjectTypes.ServerType:
{
if (passiveNode is ServerObjectState)
{
break;
}
ServerObjectState activeNode = new ServerObjectState(passiveNode.Parent);
activeNode.Create(context, passiveNode);
// add the server object as the root notifier.
AddRootNotifier(activeNode);
// replace the node in the parent.
if (passiveNode.Parent != null)
{
passiveNode.Parent.ReplaceChild(context, activeNode);
}
return activeNode;
}
}
return predefinedNode;
}