Classes Files

OrderBook/MamdaOrderBookFields.cs

Namespaces

Name
Wombat

Classes

  Name
class Wombat::MamdaOrderBookFields
Maintains a cache of common orderbook related field descriptors.

Source code

/* $Id$
 *
 * OpenMAMA: The open middleware agnostic messaging API
 * Copyright (C) 2011 NYSE Technologies, Inc.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 * 02110-1301 USA
 */

using System;
using System.Collections.Specialized;

namespace Wombat
{
    public class MamdaOrderBookFields : MamdaFields
    {
        private MamdaOrderBookFields()
        {
        }

        public static void setDictionary(
            MamaDictionary dictionary,
            NameValueCollection properties)
        {
            if (mInitialised)
            {
                return;
            }

            MamdaCommonFields.setDictionary(dictionary, null);

            string wSrcTime       = lookupFieldName(properties, "wSrcTime");
            string wActivityTime  = lookupFieldName(properties, "wActivityTime");
            string wLineTime      = lookupFieldName(properties, "wLineTime");
            string wPartId        = lookupFieldName(properties, "wPartId");
            string wSeqNum        = lookupFieldName(properties, "wSeqNum");
            string wBookTime      = lookupFieldName(properties, "wBookTime");
            string wNumLevels     = lookupFieldName(properties, "wNumLevels");
            string wPriceLevels   = lookupFieldName(properties, "wPriceLevels");
            string wPlAction      = lookupFieldName(properties, "wPlAction");
            string wPlPrice       = lookupFieldName(properties, "wPlPrice");
            string wPlSide        = lookupFieldName(properties, "wPlSide");
            string wPlSize        = lookupFieldName(properties, "wPlSize");
            string wPlSizeChange  = lookupFieldName(properties, "wPlSizeChange");
            string wPlTime        = lookupFieldName(properties, "wPlTime");
            string wPlNumEntries  = lookupFieldName(properties, "wPlNumEntries");
            string wPlNumAttach   = lookupFieldName(properties, "wPlNumAttach");
            string wPlEntries     = lookupFieldName(properties, "wPlEntries");
            string wEntryId       = lookupFieldName(properties, "wEntryId");
            string wEntryAction   = lookupFieldName(properties, "wEntryAction");
            string wEntryReason   = lookupFieldName(properties, "wEntryReason");
            string wEntrySize     = lookupFieldName(properties, "wEntrySize");
            string wEntryTime     = lookupFieldName(properties, "wEntryTime");
            string wEntryStatus   = lookupFieldName(properties, "wEntryStatus");

            SRC_TIME       = dictionary.getFieldByName(wSrcTime);
            ACTIVITY_TIME  = dictionary.getFieldByName(wActivityTime);
            LINE_TIME      = dictionary.getFieldByName(wLineTime);
            PART_ID        = dictionary.getFieldByName(wPartId);
            SEQNUM         = dictionary.getFieldByName(wSeqNum);
            BOOK_TIME      = dictionary.getFieldByName(wBookTime);
            NUM_LEVELS     = dictionary.getFieldByName(wNumLevels);
            PRICE_LEVELS   = dictionary.getFieldByName(wPriceLevels);
            PL_ACTION      = dictionary.getFieldByName(wPlAction);
            PL_PRICE       = dictionary.getFieldByName(wPlPrice);
            PL_SIDE        = dictionary.getFieldByName(wPlSide);
            PL_SIZE        = dictionary.getFieldByName(wPlSize);
            PL_SIZE_CHANGE = dictionary.getFieldByName(wPlSizeChange);
            PL_TIME        = dictionary.getFieldByName(wPlTime);
            PL_NUM_ENTRIES = dictionary.getFieldByName(wPlNumEntries);
            PL_NUM_ATTACH  = dictionary.getFieldByName(wPlNumAttach);
            PL_ENTRIES     = dictionary.getFieldByName(wPlEntries);
            ENTRY_ID       = dictionary.getFieldByName(wEntryId);
            ENTRY_ACTION   = dictionary.getFieldByName(wEntryAction);
            ENTRY_REASON   = dictionary.getFieldByName(wEntryReason);
            ENTRY_SIZE     = dictionary.getFieldByName(wEntrySize);
            ENTRY_TIME     = dictionary.getFieldByName(wEntryTime);
            ENTRY_STATUS   = dictionary.getFieldByName(wEntryStatus);

            mNumLevelFields = 0;
            while (true)
            {
                string wPriceLevel = lookupFieldName(
                    properties,
                    "wPriceLevel" + (mNumLevelFields + 1));
                if (dictionary.getFieldByName(wPriceLevel) == null)
                    break;
                mNumLevelFields++;
            }

            PRICE_LEVEL = new MamaFieldDescriptor[mNumLevelFields + 1];
            for (int i = 1; i <= mNumLevelFields; i++)
            {
                string wPriceLevel = lookupFieldName(properties, "wPriceLevel" + i);
                PRICE_LEVEL[i] = dictionary.getFieldByName(wPriceLevel);
            }

            mNumEntryFields = 0;
            while (true)
            {
                string wPlEntry = lookupFieldName(
                    properties,
                    "wPlEntry" + (mNumEntryFields + 1));
                if (dictionary.getFieldByName(wPlEntry) == null)
                    break;
                mNumEntryFields++;
            }

            PL_ENTRY = new MamaFieldDescriptor[mNumEntryFields + 1];
            for (int i = 1; i <= mNumEntryFields; i++)
            {
                string wPlEntry = lookupFieldName(properties, "wPlEntry" + i);
                PL_ENTRY[i] = dictionary.getFieldByName(wPlEntry);
            }

            mInitialised = true;
        }

        public static int getNumLevelFields()
        {
            return mNumLevelFields;
        }

        public static int getNumEntryFields ()
        {
            return mNumEntryFields;
        }

        public static bool getHasVectorFields()
        {
            return (PRICE_LEVELS != null);
        }

        public static bool getHasFixedLevelFields()
        {
            return (mNumLevelFields > 0);
        }

        public static bool isSet()
        {
            return mInitialised;
        }

        public static void reset ()
        {
          if (MamdaCommonFields.isSet())
          {
            MamdaCommonFields.reset();
          }
          mInitialised    = false;
          mNumLevelFields = 0;
          mNumEntryFields = 0;
          SRC_TIME       = null;
          ACTIVITY_TIME  = null;
          LINE_TIME      = null;
          PART_ID        = null;
          SEQNUM         = null;
          BOOK_TIME      = null;
          NUM_LEVELS     = null;
          PRICE_LEVELS   = null;
          PL_ACTION      = null;
          PL_PRICE       = null;
          PL_SIDE        = null;
          PL_SIZE        = null;
          PL_SIZE_CHANGE = null;
          PL_TIME        = null;
          PL_NUM_ENTRIES = null;
          PL_NUM_ATTACH  = null;
          PL_ENTRIES     = null;
          ENTRY_ID       = null;
          ENTRY_ACTION   = null;
          ENTRY_REASON   = null;
          ENTRY_SIZE     = null;
          ENTRY_TIME     = null;
          ENTRY_STATUS   = null;
          PRICE_LEVEL    = null;
          PL_ENTRY       = null;
          }

        public static MamaFieldDescriptor   SRC_TIME       = null;
        public static MamaFieldDescriptor   ACTIVITY_TIME  = null;
        public static MamaFieldDescriptor   LINE_TIME      = null;
        public static MamaFieldDescriptor   PART_ID        = null;
        public static MamaFieldDescriptor   SEQNUM         = null;
        public static MamaFieldDescriptor   BOOK_TIME      = null;
        public static MamaFieldDescriptor   NUM_LEVELS     = null;
        public static MamaFieldDescriptor   PRICE_LEVELS   = null;
        public static MamaFieldDescriptor   PL_ACTION      = null;
        public static MamaFieldDescriptor   PL_PRICE       = null;
        public static MamaFieldDescriptor   PL_SIDE        = null;
        public static MamaFieldDescriptor   PL_SIZE        = null;
        public static MamaFieldDescriptor   PL_SIZE_CHANGE = null;
        public static MamaFieldDescriptor   PL_TIME        = null;
        public static MamaFieldDescriptor   PL_NUM_ENTRIES = null;
        public static MamaFieldDescriptor   PL_NUM_ATTACH  = null;
        public static MamaFieldDescriptor   PL_ENTRIES     = null;
        public static MamaFieldDescriptor   ENTRY_ID       = null;
        public static MamaFieldDescriptor   ENTRY_ACTION   = null;
        public static MamaFieldDescriptor   ENTRY_REASON   = null;
        public static MamaFieldDescriptor   ENTRY_SIZE     = null;
        public static MamaFieldDescriptor   ENTRY_TIME     = null;
        public static MamaFieldDescriptor   ENTRY_STATUS   = null;
        public static MamaFieldDescriptor[] PRICE_LEVEL    = null;
        public static MamaFieldDescriptor[] PL_ENTRY       = null;

        private static int mNumLevelFields = 0;
        private static int mNumEntryFields = 0;
        private static bool mInitialised = false;
    }
}

Updated on 2023-03-31 at 15:30:18 +0100