private void InitPricingSession(List <Symbol> symbols) { var assets = symbols.Select(s => WellKnown.Assets[s]).ToList(); pricingSession = new PricingSession(context, assets); pricingSession.OnStatus += HandleOnStatus; pricingSession.OnData += (s, e) => { UpdatePricingHeartbeat(e.Data.DateTimeUtc); switch (e.Data.Kind) { case ResponseKind.BadPrice: OnBadPrice?.Invoke(this, Lambda.Funcify((BadPriceResponse)e.Data, d => new BadPriceArgs(d.Json, d.Results))); break; case ResponseKind.Price: var bidAsk = ((PriceResponse)e.Data).BidAsk; OnBidAsk?.Invoke(this, new BidAskArgs(bidAsk)); chunker.HandleBidAsk(bidAsk); break; case ResponseKind.Heartbeat: OnHeartbeat?.Invoke(this, new HeartbeatArgs( StreamKind.Pricing, e.Data.DateTimeUtc)); break; default: throw new ArgumentOutOfRangeException(nameof(e.Data.Kind)); } }; }
public void Disconnect() { if (pricingSession != null) { pricingSession.Disconnect(); pricingSession = null; } }