private Task ProcessBestBidAsk(BestBidAsk bestBidAsk)
        {
            // If Price is zero/null publish exception to support slack channel
            // and discard entry
            if (bestBidAsk.BestAsk == null || bestBidAsk.BestAsk <= 0 ||
                bestBidAsk.BestBid == null || bestBidAsk.BestBid <= 0)
            {
                //log
                //LogWarning("ProcessBestBidAsk", string.Format("Received BestBidAsk with price zero [0], BestBidAsk discarded. {0}", bestBidAsk));

                // Discard it
                return(Task.FromResult(0));
            }

            InstrumentPrice assetbid = new InstrumentPrice()
            {
                Instrument  = bestBidAsk.Asset,
                Source      = bestBidAsk.Source,
                Ask         = bestBidAsk.BestAsk.Value,
                Bid         = bestBidAsk.BestBid.Value,
                Date        = bestBidAsk.Timestamp,
                ReceiveDate = DateTime.UtcNow
            };

            OnMessageReceived(assetbid);

            return(Task.FromResult(0));
        }
        private Task PrimaryMessageReceived_BestBidAsk(BestBidAsk bestBidAsk)
        {
            //Message received, update timestamp.
            _primaryStreamLastMessageTimeStamp = DateTime.UtcNow;

            //Console.WriteLine(bestBidAsk);

            // Filter Asset from Primary Stream Configuration File
            if (!_primaryGameInstruments.Contains(bestBidAsk.Asset))
            {
                // Not in allowed assets list, discard entry
                return(Task.FromResult(0));
            }
            else
            {
                return(ProcessBestBidAsk(bestBidAsk));
            }
        }