/// /// <summary> * append a message element to <code>this</code> /// * </summary> /// * <param name="family"> the Message family - Query, Acknowledge, Command, Response, Registration or Signal </param> /// * <param name="typ"> the messages @Type value, null if unknown </param> /// * <returns> the newly created message </returns> /// public virtual JDFMessage appendMessageElement(JDFMessage.EnumFamily family, JDFMessage.EnumType typ) { if (family == null) { throw new JDFException("appendMessageElement: creating undefined message family"); } string sFamily = family.getName(); JDFMessage m = (JDFMessage)appendElement(sFamily, null); if (typ != null) { m.setType(typ); } return(m); }
/// /// <summary> * get the ith message element of family type family /// * </summary> /// * <param name="family"> the Message family - Query, Acknowledge, Command, Response, Registration or Signal </param> /// * <param name="typ"> the messages @Type value, null if unknown </param> /// * <param name="i"> the i'th message element to get, if i<0, get from back </param> /// * <returns> the matching message, null if none are found </returns> /// public virtual JDFMessage getMessageElement(JDFMessage.EnumFamily family, JDFMessage.EnumType typ, int i) { int iLocal = i; if (iLocal < 0) // search from back { JDFMessage message = null; VElement v = getMessageVector(family, typ); if (v != null) { int siz = v.Count; iLocal = siz + iLocal; message = (JDFMessage)(iLocal >= 0 ? v[iLocal] : null); } return(message); } string typString = typ == null ? null : typ.getName(); string familyString = family == null ? null : family.getName(); KElement e = getElement(familyString, null, 0); int n = 0; while (e != null) { if (e is JDFMessage) { if (typString == null || typString.Equals(((JDFMessage)e).getType())) { if (n++ >= iLocal) { return((JDFMessage)e); } } } e = e.getNextSiblingElement(familyString, null); } return(null); }
public virtual void testMessage() { JDFDoc doc = new JDFDoc(ElementName.JMF); JDFJMF jmf = doc.getJMFRoot(); jmf.setSenderID("Pippi Langstrumpf"); IEnumerator it = JDFMessage.EnumFamily.iterator(); while (it.MoveNext()) { JDFMessage.EnumFamily f = (JDFMessage.EnumFamily)it.Current; if (f == null) { continue; } JDFMessage m = jmf.appendMessageElement(f, null); m.setType("KnownMessages"); if (f.Equals(JDFMessage.EnumFamily.Acknowledge)) { JDFAcknowledge a = (JDFAcknowledge)m; a.setrefID("refID"); } if (f.Equals(JDFMessage.EnumFamily.Registration)) { JDFRegistration r = (JDFRegistration)m; r.appendSubscription(); } Assert.IsTrue(jmf.getMessageVector(f, null).Count == 1, " added messages"); Assert.IsTrue(jmf.getMessageElement(f, null, 0).hasAttribute(AttributeName.XSITYPE), "xsi type"); Assert.AreEqual(f.getName() + "KnownMessages", jmf.getMessageElement(f, null, 0).getAttribute(AttributeName.XSITYPE), "xsi type"); } Assert.IsTrue(jmf.getMessageVector(null, null).Count == 6, " added messages"); Assert.IsTrue(jmf.isValid(EnumValidationLevel.Complete), "valid"); }
/// /// <summary> * get a vector of all messages in this JMF /// * </summary> /// * <param name="family"> requested message family </param> /// * <param name="typ"> requested message type </param> /// * <returns> VElement all message elements /// * </returns> /// public virtual VElement getMessageVector(JDFMessage.EnumFamily family, JDFMessage.EnumType typ) { VElement vM; string sFamily = (family != null) ? family.getName() : null; JDFAttributeMap typMap = typ == null ? null : new JDFAttributeMap(AttributeName.TYPE, typ.getName()); vM = getChildrenByTagName(sFamily, null, typMap, true, true, 0); if (family == null) // only needed if call was generic { // do reverse iteration because erase invalidates for (int i = vM.Count - 1; i >= 0; i--) { if (!(vM[i] is JDFMessage)) { vM.RemoveAt(i); } } } return(vM); }