private void QuotesLogin(MessageMbtQuotes message) { var writePacket = QuoteSocket.MessageFactory.Create(); string textMessage = "G|100=DEMOXJSP;8055=demo01\n"; if (debug) { log.Debug("Login response: " + textMessage); } writePacket.DataOut.Write(textMessage.ToCharArray()); QuotePacketQueue.Enqueue(writePacket, message.SendUtcTime); }
private void SymbolRequest(MessageMbtQuotes message) { var symbolInfo = Factory.Symbol.LookupSymbol(message.Symbol); log.Info("Received symbol request for " + symbolInfo); ProviderSimulator.AddSymbol(symbolInfo.Symbol); switch (message.FeedType) { case "20000": // Level 1 if (symbolInfo.QuoteType != QuoteType.Level1) { throw new ApplicationException("Requested data feed of Level1 but Symbol.QuoteType is " + symbolInfo.QuoteType); } break; case "20001": // Level 2 if (symbolInfo.QuoteType != QuoteType.Level2) { throw new ApplicationException("Requested data feed of Level2 but Symbol.QuoteType is " + symbolInfo.QuoteType); } break; case "20002": // Level 1 & Level 2 if (symbolInfo.QuoteType != QuoteType.Level2) { throw new ApplicationException("Requested data feed of Level1 and Level2 but Symbol.QuoteType is " + symbolInfo.QuoteType); } break; case "20003": // Trades if (symbolInfo.TimeAndSales != TimeAndSales.ActualTrades) { throw new ApplicationException("Requested data feed of Trades but Symbol.TimeAndSale is " + symbolInfo.TimeAndSales); } break; case "20004": // Option Chains break; default: throw new ApplicationException("Sorry, unknown data type: " + message.FeedType); } }