示例#1
0
        public void Start()
        {
            var data = _writer.GetRowsAsync <OrderBookNoSql>().ToListAsync().GetAwaiter().GetResult();

            lock (_gate)
            {
                foreach (var book in data.GroupBy(e => e.PartitionKey))
                {
                    var(brokerId, symbol) = OrderBookNoSql.GetBrokerIdAndSymbol(book.Key);
                    var manager = new OrderBookManager(brokerId, symbol, _logger);
                    var price   = manager.SetState(book);

                    if (!_data.TryGetValue(brokerId, out var symbolManagers))
                    {
                        symbolManagers  = new Dictionary <string, OrderBookManager>();
                        _data[brokerId] = symbolManagers;
                    }

                    symbolManagers[symbol] = manager;

                    _logger.LogInformation("Book manager is inited. BrokerId: {brokerId}; Symbol:{symbol}; Count: {count}. Price: {ask} / {bid}", brokerId, symbol, book.Count(), price.Ask, price.Bid);
                }

                _isInit = true;
            }
        }
示例#2
0
        private OrderBookManager GetManager(string broker, string symbol)
        {
            if (!_data.TryGetValue(broker, out var brokerItem))
            {
                brokerItem    = new Dictionary <string, OrderBookManager>();
                _data[broker] = brokerItem;
            }

            if (!brokerItem.TryGetValue(symbol, out var manager))
            {
                manager            = new OrderBookManager(broker, symbol, _logger);
                brokerItem[symbol] = manager;
            }

            return(manager);
        }