} // end GetConditionDefinition /// <summary> /// Adds a subcondition to a condition in the AeCategory. /// </summary> /// <param name="aConditionName">The existing condition.</param> /// <param name="aSubconditionName">New subcondition name.</param> /// <returns> /// S_OK - if succeeded /// E_FAIL - if failure /// </returns> /// <include /// file='TBNS.doc.xml' /// path='//class[@name="AeCategory"]/ /// method[@name="AddSubConditionDefinition"]/doc/*' /// /> public virtual int AddSubConditionDefinition( string aConditionName, string aSubconditionName) { try { if (aConditionName.Length == 0 || aSubconditionName.Length == 0) { return (int) EnumResultCode.E_FAIL; } // end if if (Handle == 0) { return (int) EnumResultCode.E_FAIL; } // end if System.Diagnostics.Debug.Assert(Handle != 0, "Called for Null handle"); Hashtable syncConditions = Hashtable.Synchronized(this.m_conditions); int result = (int) EnumResultCode.S_OK; AeConditionDefinition condition = syncConditions[aConditionName] as AeConditionDefinition; if (condition == null) { result = AddConditionDefinition(aConditionName); syncConditions = Hashtable.Synchronized(this.m_conditions); condition = syncConditions[aConditionName] as AeConditionDefinition; } // end if if (ResultCode.SUCCEEDED(result)) { // at this time the condition should have been be registered result = OTBFunctions.OTSAddSubCondition(this.Handle, aConditionName, aSubconditionName); if (ResultCode.SUCCEEDED(result)) { result = condition.AddSubConditonData(aSubconditionName); } // end if } // end if return result; } catch (Exception e) { Application.Instance.Trace(EnumTraceLevel.ERR, EnumTraceGroup.OPCSERVER, "Category.AddCondition", "Exception caught:" + e.ToString()); return (int) EnumResultCode.E_FAIL; } // end try ... catch } // end AddSubConditionDefinition