public void SubscribeToSymbolTradeFeed(InstrInfo[] instr, LastTrdHndlr handler) { try { if (instr[0].type == InstrInfo.EType.EQUITY) { eqLastTrdClient.Subscribe(instr, handler); } else if (instr[0].type == InstrInfo.EType.OPTION) { optLastTrdClient.Subscribe(instr, handler); } } catch (Exception e) { Console.WriteLine("Trade subscription error: " + e.Message); } }
public void LinkToClient() { var api = new Mock <IBinanceApi>().Object; var client1 = new Mock <ITradeClient>().Object; var client2 = new TradeClient(); var symbol1 = Symbol.BTC_USDT; var symbol2 = Symbol.LTC_BTC; client2.Subscribe(symbol1); var clientSubscribeStreams = client2.SubscribedStreams.ToArray(); Assert.Equal(TradeClient.GetStreamName(symbol1), clientSubscribeStreams.Single()); var cache = new TradeCache(api, client1) { Client = client2 // link client. }; // Client subscribed streams are unchanged after link to unsubscribed cache. Assert.Equal(clientSubscribeStreams, client2.SubscribedStreams); cache.Client = client1; // unlink client. // Subscribe cache to symbol. cache.Subscribe(symbol2); // Cache is subscribed to symbol. Assert.Equal(TradeClient.GetStreamName(symbol2), cache.SubscribedStreams.Single()); cache.Client = client2; // link to client. // Client has second subscribed stream from cache. Assert.True(client2.SubscribedStreams.Count() == 2); Assert.Contains(TradeClient.GetStreamName(symbol2), client2.SubscribedStreams); }