Wombat.MamaMsg.iterateFields C# (CSharp) Method

iterateFields() public method

Invoke the specified callback for each field in the message.
public iterateFields ( MamaMsgFieldIterator iterator, Wombat.MamaDictionary dictionary, object closure ) : void
iterator MamaMsgFieldIterator
dictionary Wombat.MamaDictionary
closure object
return void
        public void iterateFields(
			MamaMsgFieldIterator iterator,
			MamaDictionary  dictionary,
			object closure)
        {
            #if MAMA_WRAPPERS_CHECK_ARGUMENTS
            if (iterator == null)
            {
                throw new ArgumentNullException("iterator");
            }
            #endif // MAMA_WRAPPERS_CHECK_ARGUMENTS
            EnsurePeerCreated();

            IntPtr dictHandle = dictionary != null ? dictionary.NativeHandle : IntPtr.Zero;
            if (forwarder == null)
            {
                forwarder = new CallbackForwarder(this, iterator, closure);
                callback =
                    new CallbackForwarder.MamaMessageIteratorDelegate(forwarder.OnField);
                GC.SuppressFinalize(forwarder);
                GC.SuppressFinalize(callback);
            }
            else
            {
                forwarder.mCallback = iterator;
                forwarder.mClosure = closure;
            }
            int code = NativeMethods.mamaMsg_iterateFields(nativeHandle, callback, dictHandle, nativeHandle);
            CheckResultCode(code);

            GC.KeepAlive(iterator);
            GC.KeepAlive(dictionary);
        }

Usage Example

Example #1
0
        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;
            }
        }
All Usage Examples Of Wombat.MamaMsg::iterateFields
MamaMsg