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; } }
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); }