public void onMsg(MamaSubscription subscription, MamaMsg msg) { MamaMsgIterator iterator = new MamaMsgIterator(mDictionary); // Set the iterator to the beginning of the message msg.begin(ref iterator); Console.WriteLine("\n+------------------------+--------+--------------+-------------------"); Console.WriteLine("| FIELD NAME | FID | TYPE | VALUE (AS STRING) "); Console.WriteLine("+------------------------+--------+--------------+-------------------"); // Keep going until there are no more fields MamaMsgField field = iterator.getField(); while (field != null) { string fieldType = field.getTypeName(); string fieldName = field.getName(); int fid = field.getFid(); string fieldValueAsString = field.getAsString(); Console.WriteLine("| {0,-22} | {1,-6} | {2,-12} | {3}", fieldName, fid, fieldType, fieldValueAsString); iterator++; // Get the next field field = iterator.getField(); } }
/// <summary> /// Display the contents of a field in the console window. /// </summary> /// <param name="field"> /// The field to display. /// </param> /// <param name="indent"> /// The level of indent to add before the string for formatting purposes. /// </param> internal void displayField(MamaMsgField field, int indent) { // Format a log string string logMessage = ""; string indentSpacer = " "; for (int i = 0; i < indent; i++) { indentSpacer += " "; } if (m_quietness < 1) { logMessage = string.Format( "{0}{1, -20 } |{2,5} | {3, 10} | ", indentSpacer, field.getName(), field.getFid(), field.getTypeName()); } mamaFieldType fieldType = field.getType(); switch (fieldType) { case mamaFieldType.MAMA_FIELD_TYPE_MSG: { MamaMsg tmpMsg = field.getMsg(); Console.WriteLine(logMessage); Console.WriteLine(indentSpacer + "{"); if (!(m_iterator)) { tmpMsg.iterateFields(this, m_dictionary, indent + 1); } else { MamaMsgIterator subIterator = new MamaMsgIterator(m_dictionary); MamaMsgField subField; tmpMsg.begin(ref subIterator); while ((subField = subIterator.getField()) != null) { displayField(subField, indent + 1); subIterator++; } } Console.WriteLine(indentSpacer + "}"); } break; case mamaFieldType.MAMA_FIELD_TYPE_VECTOR_MSG: { MamaMsg[] tmpMsgarray = field.getVectorMsg(); foreach (MamaMsg tmpMsg in tmpMsgarray) { Console.WriteLine(logMessage); Console.WriteLine(indentSpacer + "{"); if (!(m_iterator)) { tmpMsg.iterateFields(this, m_dictionary, indent + 1); } else { MamaMsgIterator subIterator = new MamaMsgIterator(m_dictionary); MamaMsgField subField; tmpMsg.begin(ref subIterator); while ((subField = subIterator.getField()) != null) { displayField(subField, indent + 1); subIterator++; } } Console.WriteLine(indentSpacer + "}"); } } break; case mamaFieldType.MAMA_FIELD_TYPE_STRING: logMessage += field.getString(); break; case mamaFieldType.MAMA_FIELD_TYPE_BOOL: if (m_quietness < 1) { logMessage += field.getBool().ToString(); } else { logMessage += field.getBool(); } break; case mamaFieldType.MAMA_FIELD_TYPE_CHAR: if (m_quietness < 1) { logMessage += field.getChar().ToString(); } else { logMessage += field.getChar(); } break; case mamaFieldType.MAMA_FIELD_TYPE_I8: if (m_quietness < 1) { logMessage += field.getI8().ToString(); } else { logMessage += field.getI8(); } break; case mamaFieldType.MAMA_FIELD_TYPE_U8: if (m_quietness < 1) { logMessage += field.getU8().ToString(); } else { logMessage += field.getU8(); } break; case mamaFieldType.MAMA_FIELD_TYPE_I16: if (m_quietness < 1) { logMessage += field.getI16().ToString(); } else { logMessage += field.getI16(); } break; case mamaFieldType.MAMA_FIELD_TYPE_U16: if (m_quietness < 1) { logMessage += field.getU16().ToString(); } else { logMessage += field.getU16(); } break; case mamaFieldType.MAMA_FIELD_TYPE_I32: if (m_quietness < 1) { logMessage += field.getI32().ToString(); } else { logMessage += field.getI32(); } break; case mamaFieldType.MAMA_FIELD_TYPE_U32: if (m_quietness < 1) { logMessage += field.getU32().ToString(); } else { logMessage += field.getU32(); } break; case mamaFieldType.MAMA_FIELD_TYPE_I64: if (m_quietness < 1) { logMessage += field.getI64().ToString(); } else { logMessage += field.getI64(); } break; case mamaFieldType.MAMA_FIELD_TYPE_U64: if (m_quietness < 1) { logMessage += field.getU64().ToString(); } else { logMessage += field.getU64(); } break; case mamaFieldType.MAMA_FIELD_TYPE_F32: if (m_quietness < 1) { logMessage += field.getF32().ToString(); } else { logMessage += field.getF32(); } break; case mamaFieldType.MAMA_FIELD_TYPE_F64: if (m_quietness < 1) { logMessage += field.getF64().ToString(); } else { logMessage += field.getF64(); } break; case mamaFieldType.MAMA_FIELD_TYPE_TIME: if (m_quietness < 1) { logMessage += field.getDateTime().ToString(); } else { logMessage += field.getDateTime(); } break; case mamaFieldType.MAMA_FIELD_TYPE_PRICE: if (m_quietness < 1) { logMessage += field.getPrice().getAsString(); } else { logMessage += field.getPrice(); } break; default: logMessage += field.getAsString(); break; } Console.WriteLine(logMessage); }