public iterateFields ( MamaMsgFieldIterator iterator, Wombat.MamaDictionary dictionary, object closure ) : void | ||
iterator | MamaMsgFieldIterator | |
dictionary | Wombat.MamaDictionary | |
closure | object | |
return | void |
private void updateTradeFields(MamaMsg msg) { mTradeCache.mGotPartId = false; mTradeCache.mLastGenericMsgWasTrade = false; mTradeCache.mGotTradeTime = false; mTradeCache.mGotTradePrice = false; mTradeCache.mGotTradeSize = false; mTradeCache.mGotTradeCount = false; mTradeCache.mGotIssueSymbol = false; lock (this) { msg.iterateFields(mFieldIterator, null, null); } if (mTradeCache.mGotIssueSymbol) { mTradeCache.mSymbol = mTradeCache.mIssueSymbol; mTradeCache.mSymbolFieldState = MamdaFieldState.MODIFIED; } if (mTradeCache.mIsIrregular) { mTradeCache.mTradePrice = mTradeCache.mIrregPrice; mTradeCache.mTradePriceFieldState = MamdaFieldState.MODIFIED; mTradeCache.mTradeVolume = mTradeCache.mIrregVolume; mTradeCache.mTradeVolumeFieldState = MamdaFieldState.MODIFIED; mTradeCache.mTradePartId = mTradeCache.mIrregPartId; mTradeCache.mTradePartIdFieldState = MamdaFieldState.MODIFIED; if (mTradeCache.mIrregTime == DateTime.MinValue) { mTradeCache.mEventTime = mTradeCache.mLastTime; mTradeCache.mEventTimeFieldState = MamdaFieldState.MODIFIED; } else { mTradeCache.mEventTime = mTradeCache.mIrregTime; mTradeCache.mEventTimeFieldState = MamdaFieldState.MODIFIED; } } else { mTradeCache.mTradePrice = mTradeCache.mLastPrice; mTradeCache.mTradePriceFieldState = MamdaFieldState.MODIFIED; mTradeCache.mTradeVolume = mTradeCache.mLastVolume; mTradeCache.mTradeVolumeFieldState = MamdaFieldState.MODIFIED; mTradeCache.mTradePartId = mTradeCache.mLastPartId; mTradeCache.mTradePartIdFieldState = MamdaFieldState.MODIFIED; mTradeCache.mEventTime = mTradeCache.mLastTime; mTradeCache.mEventTimeFieldState = MamdaFieldState.MODIFIED; } if (mTradeCache.mGotPartId == false) { // No explicit part ID in message, but maybe in symbol. if (mTradeCache.mSymbol != null) { int lastDot = mTradeCache.mSymbol.IndexOf("."); if (lastDot != -1) { lastDot++; if (lastDot != mTradeCache.mSymbol.Length) { mTradeCache.mPartId = mTradeCache.mSymbol.Substring(lastDot); mTradeCache.mPartIdFieldState = MamdaFieldState.MODIFIED; mTradeCache.mGotPartId = true; } } } } if (mTradeCache.mGotTradeTime || mTradeCache.mGotTradePrice || mTradeCache.mGotTradeSize) { mTradeCache.mLastGenericMsgWasTrade = true; } }
private void updateOrderImbalanceFields( MamdaSubscription subscription, MamaMsg msg, mamaMsgType msgType) { string securityStatus = null; lock (this) { MamaMsgField msgField = null; /*The wSecStatusQual will not always be in the message so you need to account for this by checking for it. */ try { msgField = msg.getField(MamdaOrderImbalanceFields.SECURITY_STATUS_QUAL, null); } catch (MamdaDataException ex) { throw new MamaException(MamaStatus.mamaStatus.MAMA_STATUS_PLATFORM, ex.Message); } if (msgField == null) //does not exist return; securityStatus = msgField.getString(); if (isImbalanceType(securityStatus)) { clearCache(mOrderImbalanceCache); } msg.iterateFields(mFieldIterator, null,null); } switch (msgType) { case mamaMsgType.MAMA_MSG_TYPE_INITIAL: case mamaMsgType.MAMA_MSG_TYPE_RECAP: handleRecap(subscription, msg); break; case mamaMsgType.MAMA_MSG_TYPE_UPDATE: { int value = 0; if (securityStatus != null) { value = MamdaOrderImbalanceType.stringToValue(securityStatus); if (MamdaOrderImbalanceType.isMamdaImbalanceOrder(value)) { handleOrderImbalance(subscription,msg); } else { handleNoOrderImbalance(subscription, msg); } } } break; default: break; } }
/// <summary> /// Implementation of MamdaListener interface. /// </summary> public void onMsg( MamdaSubscription subscription, MamaMsg msg, mamaMsgType msgType) { // If msg is a trade-related message, invoke the // appropriate callback: updateFieldStates(); lock (this) { mUpdated = false; msg.iterateFields(mFieldIterator, null, null); } switch (msgType) { case mamaMsgType.MAMA_MSG_TYPE_INITIAL: case mamaMsgType.MAMA_MSG_TYPE_RECAP: handleRecap(subscription, msg); break; case mamaMsgType.MAMA_MSG_TYPE_PREOPENING: case mamaMsgType.MAMA_MSG_TYPE_SEC_STATUS: case mamaMsgType.MAMA_MSG_TYPE_UPDATE: case mamaMsgType.MAMA_MSG_TYPE_QUOTE: case mamaMsgType.MAMA_MSG_TYPE_TRADE: case mamaMsgType.MAMA_MSG_TYPE_BOOK_UPDATE: handleSecurityStatus(subscription, msg); break; } }
private void updateQuoteFields(MamaMsg msg) { mLastGenericMsgWasQuote = false; mQuoteCache.mGotBidPrice = false; mQuoteCache.mGotAskPrice = false; mQuoteCache.mGotBidSize = false; mQuoteCache.mGotAskSize = false; mQuoteCache.mGotBidDepth = false; mQuoteCache.mGotAskDepth = false; mQuoteCache.mGotPartId = false; mQuoteCache.mGotBidPartId = false; mQuoteCache.mGotAskPartId = false; mQuoteCache.mGotQuoteCount = false; // Iterate over all of the fields in the message. lock (this) { msg.iterateFields(mFieldIterator, null, null); } // Check certain special fields. if (mQuoteCache.mGotBidSize || mQuoteCache.mGotAskSize || mQuoteCache.mGotBidDepth || mQuoteCache.mGotAskDepth || mQuoteCache.mGotBidPrice || mQuoteCache.mGotAskPrice || mQuoteCache.mGotBidPartId || mQuoteCache.mGotAskPartId) { mLastGenericMsgWasQuote = true; } if (mQuoteCache.mGotPartId == false && mQuoteCache.mSymbol != null) { // No explicit part ID in message, but maybe in symbol. int lastDot = mQuoteCache.mSymbol.IndexOf("."); if (lastDot != -1) { lastDot++; int lastChar = mQuoteCache.mSymbol.Length; if (lastDot != lastChar) { mQuoteCache.mPartId = mQuoteCache.mSymbol.Substring(lastDot, lastChar - lastDot); mQuoteCache.mGotPartId = true; mQuoteCache.mPartIdFieldState = MamdaFieldState.MODIFIED; } } } }
private void handleAuctionMessage( MamdaSubscription subscription, MamaMsg msg, mamaMsgType msgType) { updateFieldStates(); lock (this) { msg.iterateFields(mFieldIterator, null, null); } switch(msgType) { case mamaMsgType.MAMA_MSG_TYPE_INITIAL: case mamaMsgType.MAMA_MSG_TYPE_RECAP: handleRecap(subscription, msg); break; case mamaMsgType.MAMA_MSG_TYPE_UPDATE: handleUpdate(subscription, msg); break; default: break; } }
public void onMsg(MamaSubscription subscription, MamaMsg msg) { // Create a field callback class to display the field contents ListenerFieldCallback fieldCallback = new ListenerFieldCallback(m_dictionary, m_iterator, m_quietness); if (m_quietness < 2) { Console.WriteLine(subscription.subscSource + "." + subscription.subscSymbol + " TYPE: " + msg.getType() + " Status: " + msg.getStatus()); } if (m_quietness < 1) { if (m_iterator) { // Set the iterator to the beginning of the message msg.begin(ref m_messageIterator); // Keep going until there are no more fields MamaMsgField field = m_messageIterator.getField(); while (field != null) { // Display the field fieldCallback.displayField(field, 0); m_messageIterator++; // Get the next field field = m_messageIterator.getField(); } } else { // Otherwise use the iteration function on the message itself int indentlevel = 0; msg.iterateFields(fieldCallback, m_dictionary, indentlevel); } } }