Ejemplo n.º 1
0
        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));
                }
            };
        }
Ejemplo n.º 2
0
        public void Disconnect()
        {
            if (pricingSession != null)
            {
                pricingSession.Disconnect();

                pricingSession = null;
            }
        }