コード例 #1
0
        private async Task ProcessRequest(Level1Request request)
        {
            if (!request.Online)
            {
                return;
            }

            if (!request.HasExpired())
            {
                Logger.Info("Not expired level 1 request for Symbol: {0}... ({1}), Until next expiration: {2} ms",
                            request.Symbol, _level1RequestQueue.InputCount, request.UntilExpiration.TotalMilliseconds);
                request.Signal();
                return;
            }

            // make a market request
            Logger.Info("Requesting level 1 for Symbol: {0}... ({1})", request.Symbol, _level1RequestQueue.InputCount);
            var level1MarketData = await _marketDataProvider.GetLevel1MarketDataAsync(request.Symbol);

            request.Signal();

            // persist the data
            _level1MarketDataService.PersistLevel1MarketData(level1MarketData);
        }