private static void a9pwYGI8t(ProviderEventArgs e) { IMarketDataProvider provider = e.Provider as IMarketDataProvider; if (provider == null || provider == ProviderManager.MarketDataSimulator) { return; } Hashtable hashtable1 = DataManager.providers[provider] as Hashtable; if (hashtable1 == null) { return; } foreach (Hashtable hashtable2 in (IEnumerable)hashtable1.Values) { foreach (RequestItem reqItem in (IEnumerable)hashtable2.Values) { provider.SendMarketDataRequest(reqItem.GetFIXMarketDataRequest()); } } }
private static void DoFixRequest(IMarketDataProvider provider, Instrument instrument, MarketDataType type, char subCh, string suffix) { FIXMarketDataRequest request = new FIXMarketDataRequest(); request.MDReqID = DataManager.GetRequestId(); request.SubscriptionRequestType = subCh; switch (type) { case MarketDataType.Trade: request.AddGroup(new FIXMDEntryTypesGroup('2')); break; case MarketDataType.Quote: request.AddGroup(new FIXMDEntryTypesGroup('0')); request.AddGroup(new FIXMDEntryTypesGroup('1')); request.MarketDepth = 1; // Top of Book break; case MarketDataType.MarketDepth: request.AddGroup(new FIXMDEntryTypesGroup('0')); request.AddGroup(new FIXMDEntryTypesGroup('1')); request.MarketDepth = 0; // Full Book break; } if (!instrument.ContainsField(15)) instrument.Currency = Framework.Configuration.DefaultCurrency; FIXRelatedSymGroup symGrp = new FIXRelatedSymGroup(); request.AddGroup(symGrp); symGrp.Symbol = instrument.Symbol; symGrp.SecurityType = instrument.SecurityType; symGrp.SecurityExchange = instrument.SecurityExchange; symGrp.Currency = instrument.Currency; symGrp.SecurityID = instrument.SecurityID; symGrp.SecurityIDSource = instrument.SecurityIDSource; symGrp.MaturityDate = instrument.MaturityDate; symGrp.MaturityMonthYear = instrument.MaturityMonthYear; symGrp.StrikePrice = instrument.StrikePrice; symGrp.PutOrCall = ((FIXInstrument)instrument).PutOrCall; foreach (FIXSecurityAltIDGroup group2 in instrument.SecurityAltIDGroup) symGrp.AddGroup(group2); symGrp.SetStringValue(10001, suffix); if (provider == ProviderManager.MarketDataSimulator) { provider.SendMarketDataRequest(request); } else { switch (subCh) { case MARKET_DATA_SUBSCRIBE: bool flag1 = false; lock (DataManager.providers) { Hashtable local_4 = DataManager.providers[provider] as Hashtable; if (local_4 == null) { local_4 = new Hashtable(); DataManager.providers.Add(provider, local_4); } Hashtable local_5 = local_4[instrument] as Hashtable; if (local_5 == null) { local_5 = new Hashtable(); local_4.Add(instrument, local_5); } RequestItem local_6 = local_5[type] as RequestItem; if (local_6 == null) { local_6 = new RequestItem(request); local_5.Add(type, local_6); flag1 = true; } RequestItem temp_91 = local_6; int temp_94 = temp_91.GetRequestId() + 1; temp_91.SetRequestId(temp_94); } if (!flag1) break; provider.SendMarketDataRequest(request); break; case MARKET_DATA_UNSUBSCRIBE: bool canSend = false; string msg = null; lock (DataManager.providers) { Hashtable local_10 = DataManager.providers[provider] as Hashtable; if (local_10 != null) { Hashtable local_11 = local_10[instrument] as Hashtable; if (local_11 != null) { RequestItem local_12 = local_11[type] as RequestItem; if (local_12 != null) { RequestItem temp_152 = local_12; int temp_155 = temp_152.GetRequestId() - 1; temp_152.SetRequestId(temp_155); if (local_12.GetRequestId() == 0) { local_11.Remove(type); if (local_11.Count == 0) { local_10.Remove(instrument); if (local_10.Count == 0) DataManager.providers.Remove(provider); } canSend = true; } } else msg = "No this RequestItem"; } else msg = "No Request for this instrument"; } else msg = "No Request for this provider"; } if (msg != null) DataManager.LogRequestMessage(provider, instrument, type, msg); if (!canSend) break; provider.SendMarketDataRequest(request); break; } } }
private static void DoFixRequest(IMarketDataProvider provider, Instrument instrument, MarketDataType type, char subCh, string suffix) { FIXMarketDataRequest request = new FIXMarketDataRequest(); request.MDReqID = DataManager.GetRequestId(); request.SubscriptionRequestType = subCh; switch (type) { case MarketDataType.Trade: request.AddGroup(new FIXMDEntryTypesGroup('2')); break; case MarketDataType.Quote: request.AddGroup(new FIXMDEntryTypesGroup('0')); request.AddGroup(new FIXMDEntryTypesGroup('1')); request.MarketDepth = 1; // Top of Book break; case MarketDataType.MarketDepth: request.AddGroup(new FIXMDEntryTypesGroup('0')); request.AddGroup(new FIXMDEntryTypesGroup('1')); request.MarketDepth = 0; // Full Book break; } if (!instrument.ContainsField(15)) { instrument.Currency = Framework.Configuration.DefaultCurrency; } FIXRelatedSymGroup symGrp = new FIXRelatedSymGroup(); request.AddGroup(symGrp); symGrp.Symbol = instrument.Symbol; symGrp.SecurityType = instrument.SecurityType; symGrp.SecurityExchange = instrument.SecurityExchange; symGrp.Currency = instrument.Currency; symGrp.SecurityID = instrument.SecurityID; symGrp.SecurityIDSource = instrument.SecurityIDSource; symGrp.MaturityDate = instrument.MaturityDate; symGrp.MaturityMonthYear = instrument.MaturityMonthYear; symGrp.StrikePrice = instrument.StrikePrice; symGrp.PutOrCall = ((FIXInstrument)instrument).PutOrCall; foreach (FIXSecurityAltIDGroup group2 in instrument.SecurityAltIDGroup) { symGrp.AddGroup(group2); } symGrp.SetStringValue(10001, suffix); if (provider == ProviderManager.MarketDataSimulator) { provider.SendMarketDataRequest(request); } else { switch (subCh) { case MARKET_DATA_SUBSCRIBE: bool flag1 = false; lock (DataManager.providers) { Hashtable local_4 = DataManager.providers[provider] as Hashtable; if (local_4 == null) { local_4 = new Hashtable(); DataManager.providers.Add(provider, local_4); } Hashtable local_5 = local_4[instrument] as Hashtable; if (local_5 == null) { local_5 = new Hashtable(); local_4.Add(instrument, local_5); } RequestItem local_6 = local_5[type] as RequestItem; if (local_6 == null) { local_6 = new RequestItem(request); local_5.Add(type, local_6); flag1 = true; } RequestItem temp_91 = local_6; int temp_94 = temp_91.GetRequestId() + 1; temp_91.SetRequestId(temp_94); } if (!flag1) { break; } provider.SendMarketDataRequest(request); break; case MARKET_DATA_UNSUBSCRIBE: bool canSend = false; string msg = null; lock (DataManager.providers) { Hashtable local_10 = DataManager.providers[provider] as Hashtable; if (local_10 != null) { Hashtable local_11 = local_10[instrument] as Hashtable; if (local_11 != null) { RequestItem local_12 = local_11[type] as RequestItem; if (local_12 != null) { RequestItem temp_152 = local_12; int temp_155 = temp_152.GetRequestId() - 1; temp_152.SetRequestId(temp_155); if (local_12.GetRequestId() == 0) { local_11.Remove(type); if (local_11.Count == 0) { local_10.Remove(instrument); if (local_10.Count == 0) { DataManager.providers.Remove(provider); } } canSend = true; } } else { msg = "No this RequestItem"; } } else { msg = "No Request for this instrument"; } } else { msg = "No Request for this provider"; } } if (msg != null) { DataManager.LogRequestMessage(provider, instrument, type, msg); } if (!canSend) { break; } provider.SendMarketDataRequest(request); break; } } }