private void updateLevelSide( MamdaOrderBookPriceLevel level, TreeMap bookSide) { MamaPrice price = level.getPrice(); if (bookSide.ContainsKey(price)) { MamdaOrderBookPriceLevel fullBookLevel = bookSide[price] as MamdaOrderBookPriceLevel; /*Iterate over the entries in the update and apply them to the * full book level according to action*/ foreach (MamdaOrderBookEntry deltaEntry in level) { switch (deltaEntry.getAction()) { case MamdaOrderBookEntry.Actions.Add: fullBookLevel.addEntry(deltaEntry); break; case MamdaOrderBookEntry.Actions.Update: fullBookLevel.updateEntry(deltaEntry); break; case MamdaOrderBookEntry.Actions.Delete: fullBookLevel.removeEntry(deltaEntry); break; case MamdaOrderBookEntry.Actions.Unknown: /*Do nothing*/ break; default: /*Do nothing*/ break; } } /*Update the details for the level itself*/ fullBookLevel.setDetails(level); } else { bookSide.Add(price, level); // Add it anyway } }
private void getEntries( MamdaOrderBookPriceLevel level, MamaMsg plMsg) { /* Entries may or may not exist in the message. If they do exist, * they exist as a vector of submessages, separate submessages, or * (if there is only one entry in the message) in the price level * message itself. */ /* Optional order book fields: */ MamaMsg[] msgEntries = null; /*We won't have PL_ENTRIES if FieldAttrsOrderBookWombatMsg is not specified in the data dictionary*/ if (MamdaOrderBookFields.PL_ENTRIES != null) { /* null is passed as default value otherwise getVectorMsg throws an exception if not found*/ msgEntries = plMsg.getVectorMsg(MamdaOrderBookFields.PL_ENTRIES, null); } if (msgEntries != null) { MamdaOrderBookEntry[] entries = new MamdaOrderBookEntry[msgEntries.Length]; for (int j = 0; j < msgEntries.Length; j++) { MamaMsg entMsg = msgEntries[j]; if (entMsg != null) { MamdaOrderBookEntry entry = new MamdaOrderBookEntry(); getEntryInfo(entry, entMsg, level); level.addEntry(entry); } } return; } /* Second, try the list of entries. */ int maxEntryFields = MamdaOrderBookFields.PL_ENTRY.Length; // Get the number of attached sub messages int numEntryAttached = plMsg.getI32(MamdaOrderBookFields.PL_NUM_ATTACH, 0); // If there are no sub messages attempt to get the entry Id from this price level message if (0 == numEntryAttached) { string entID = null; // Check for the entry Id if (plMsg.tryString(MamdaOrderBookFields.ENTRY_ID, ref entID)) { // Add a new entry to the level MamdaOrderBookEntry entry = new MamdaOrderBookEntry(); getEntryInfo(entry, plMsg, level); level.addEntry(entry); } } else { // Ensure we dont' enumerate beyond the maximum number of entries if (numEntryAttached < maxEntryFields) { maxEntryFields = numEntryAttached; } // Enumerate all the entries for (int j = 1; j <= maxEntryFields; j++) { // Get the sub message MamaMsg entMsg = plMsg.getMsg(MamdaOrderBookFields.PL_ENTRY[j], null); if (entMsg != null) { // Add an entry for this level MamdaOrderBookEntry entry = new MamdaOrderBookEntry(); getEntryInfo(entry, entMsg, level); level.addEntry(entry); } } } }
private void getEntries( MamdaOrderBookPriceLevel level, MamaMsg plMsg) { /* Entries may or may not exist in the message. If they do exist, * they exist as a vector of submessages, separate submessages, or * (if there is only one entry in the message) in the price level * message itself. */ /* Optional order book fields: */ MamaMsg[] msgEntries = null; /*We won't have PL_ENTRIES if FieldAttrsOrderBookWombatMsg * is not specified in the data dictionary*/ if (MamdaOrderBookFields.PL_ENTRIES != null) { /* null is passed as default value otherwise * getVectorMsg throws an exception if not found*/ msgEntries = plMsg.getVectorMsg(MamdaOrderBookFields.PL_ENTRIES, null); } if (msgEntries != null) { MamdaOrderBookEntry[] entries = new MamdaOrderBookEntry[msgEntries.Length]; for (int j = 0; j < msgEntries.Length; j++) { MamaMsg entMsg = msgEntries[j]; if (entMsg != null) { MamdaOrderBookEntry entry = new MamdaOrderBookEntry(); getEntryInfo(entry, entMsg, level); level.addEntry(entry); } } return; } /* Second, try the list of entries. */ int maxEntryFields = MamdaOrderBookFields.PL_ENTRY.Length; // Get the number of attached sub messages int numEntryAttached = plMsg.getI32(MamdaOrderBookFields.PL_NUM_ATTACH, 0); // If there are no sub messages attempt to get the entry Id from this price level message if (0 == numEntryAttached) { string entID = null; // Check for the entry Id if (plMsg.tryString(MamdaOrderBookFields.ENTRY_ID, ref entID)) { // Add a new entry to the level MamdaOrderBookEntry entry = new MamdaOrderBookEntry(); getEntryInfo(entry, plMsg, level); level.addEntry(entry); } } else { // Ensure we dont' enumerate beyond the maximum number of entries if (numEntryAttached < maxEntryFields) { maxEntryFields = numEntryAttached; } // Enumerate all the entries for (int j = 1; j <= maxEntryFields; j++) { // Get the sub message MamaMsg entMsg = plMsg.getMsg(MamdaOrderBookFields.PL_ENTRY[j], null); if (entMsg != null) { // Add an entry for this level MamdaOrderBookEntry entry = new MamdaOrderBookEntry(); getEntryInfo(entry, entMsg, level); level.addEntry(entry); } } } }