Exemple #1
0
        public void Set(IReadOnlyList <Candle> candles)
        {
            _lock.EnterWriteLock();

            try
            {
                foreach (var groupByAssetPairId in candles.GroupBy(candle => candle.AssetPairId))
                {
                    if (!_cache.TryGetValue(groupByAssetPairId.Key, out var candlesByAssetPairId))
                    {
                        candlesByAssetPairId = new Dictionary <CandleType, CandlesBag>();
                        _cache.Add(groupByAssetPairId.Key, candlesByAssetPairId);
                    }

                    foreach (var groupByType in groupByAssetPairId.GroupBy(candle => candle.Type))
                    {
                        if (!candlesByAssetPairId.TryGetValue(groupByType.Key, out var bag))
                        {
                            bag = new CandlesBag();
                            candlesByAssetPairId.Add(groupByType.Key, bag);
                        }

                        bag.Add(groupByType.ToList());
                    }
                }
            }
            finally
            {
                _lock.ExitWriteLock();
            }
        }
Exemple #2
0
        public async Task InitializeAsync()
        {
            if (_initialized)
            {
                return;
            }

            var candles = await _candlesRepository.GetAllAsync();

            foreach (var groupByAssetPairId in candles.GroupBy(candle => candle.AssetPairId))
            {
                var assetPairCandles = new Dictionary <CandleType, CandlesBag>();

                foreach (var groupByType in groupByAssetPairId.GroupBy(candle => candle.Type))
                {
                    var bag = new CandlesBag(groupByType.ToList());
                    assetPairCandles.Add(groupByType.Key, bag);
                }

                _cache.Add(groupByAssetPairId.Key, assetPairCandles);
            }

            _initialized = true;
        }