Ejemplo n.º 1
0
        private void AddOrderBookFromCacheProvider(OrderBook orderBook)
        {
            if (!_assetPairs.ContainsKey(orderBook.AssetPair.Id))
            {
                return;
            }

            orderBook.SetAssetPair(_assetPairs[orderBook.AssetPair.Id]);

            lock (_sync)
            {
                if (!_dirtyLykkeOrderBooks.ContainsKey(orderBook.AssetPair.Id))
                {
                    _dirtyLykkeOrderBooks.Add(orderBook.AssetPair.Id, orderBook);
                }
                else
                {
                    // Update half only if it doesn't exist
                    var dirtyOrderBook = _dirtyLykkeOrderBooks[orderBook.AssetPair.Id];

                    var newBids = dirtyOrderBook.Bids ?? orderBook.Bids;
                    var newAsks = dirtyOrderBook.Asks ?? orderBook.Asks;

                    var newOrderBook = new OrderBook(orderBook.Source, orderBook.AssetPair, newBids, newAsks, orderBook.Timestamp);
                    _dirtyLykkeOrderBooks[orderBook.AssetPair.Id] = newOrderBook;
                }
            }

            MoveFromDirtyToMain(orderBook.AssetPair.Id);
        }
Ejemplo n.º 2
0
        public Task HandleAsync(OrderBook orderBook)
        {
            if (!_assetPairs.ContainsKey(orderBook.AssetPair.Id))
            {
                return(Task.CompletedTask);
            }

            orderBook.SetAssetPair(_assetPairs[orderBook.AssetPair.Id]);

            lock (_sync)
            {
                if (!_dirtyLykkeOrderBooks.ContainsKey(orderBook.AssetPair.Id))
                {
                    _dirtyLykkeOrderBooks.Add(orderBook.AssetPair.Id, orderBook);
                }
                else
                {
                    // Update half even if it already exists
                    var dirtyOrderBook = _dirtyLykkeOrderBooks[orderBook.AssetPair.Id];

                    var newBids = orderBook.Bids ?? dirtyOrderBook.Bids;
                    var newAsks = orderBook.Asks ?? dirtyOrderBook.Asks;

                    var newOrderBook = new OrderBook(orderBook.Source, orderBook.AssetPair, newBids, newAsks, orderBook.Timestamp);
                    _dirtyLykkeOrderBooks[orderBook.AssetPair.Id] = newOrderBook;
                }
            }

            MoveFromDirtyToMain(orderBook.AssetPair.Id);

            return(Task.CompletedTask);
        }