} // end AddChild /// <summary> /// Removes the child if there is any. The entire branch of the aChild will be removed as well from the address space. /// </summary> /// <param name="aChild">AddressSpaceElement child to be removed from this instance</param> /// <returns> /// true - aChild removed /// false - aChild was not removed /// </returns> /// <include /// file='TBNS.doc.xml' /// path='//class[@name="DaAddressSpaceElement"]/ /// method[@name="RemoveChild"]/doc/*' /// /> public override bool RemoveChild(AddressSpaceElement aChild) { if (!HasChildren) { // just log a warning, but proceed then with the removal attempt Application.Instance.Trace( EnumTraceLevel.WRN, EnumTraceGroup.OPCSERVER, "DaAddressSpaceElement.RemoveChild", "This element does not allow childred"); } // end if DaAddressSpaceElement child = aChild as DaAddressSpaceElement; if (child == null) { Application.Instance.Trace(EnumTraceLevel.WRN, EnumTraceGroup.OPCSERVER, "DaAddressSpaceElement.RemoveChild", "Invalid child provided"); return false; } // end if if (child.HasChildren) { // Remove the clildren of the child ArrayList otherChildren = child.GetChildren(); foreach (AddressSpaceElement element in otherChildren) { child.RemoveChild(element); } // end for } // end if int result = OTBFunctions.OTSRemoveAddressSpaceElement(child.ObjectHandle); if (!ResultCode.SUCCEEDED(result)) { Application.Instance.Trace(EnumTraceLevel.WRN, EnumTraceGroup.OPCSERVER, "DaAddressSpaceElement.RemoveChild", "OTSRemoveAddressSpaceElement has failed with code" + result.ToString()); return false; } // end if result = Application.Instance.DaAddressSpaceRoot.RemoveElementFromArray(child); if (!ResultCode.SUCCEEDED(result)) { Application.Instance.Trace(EnumTraceLevel.WRN, EnumTraceGroup.OPCSERVER, "DaAddressSpaceElement.RemoveChild", "RemoveElementFromArray has failed with code" + result.ToString()); return false; } // end if return base.RemoveChild(aChild); } // end RemoveChild