private void HandleSnapshot(MarketByPricePullResponse response) { // received snapshot, convert and stream var levels = ConvertLevels(response); var bulk = new OrderBookLevelBulk(OrderBookAction.Insert, levels, CryptoOrderBookType.L2); FillBulk(response, bulk); StreamSnapshot(bulk); }
private bool TryHandlePullResponses(string message) { if (MarketByPricePullResponse.TryParse(Serializer, message, out var marketByPrice)) { Streams.MarketByPricePullSubject.OnNext(marketByPrice); return(true); } return(false); }
private void FillBulk(MarketByPricePullResponse response, OrderBookLevelBulk bulk) { if (response == null) { return; } bulk.ExchangeName = ExchangeName; bulk.ServerTimestamp = response.Timestamp.DateTime; }
private void Handle(MarketByPricePullResponse msg) { for (var i = 0; i < msg.Data?.Bids.Length; ++i) { var bid = msg.Data.Bids[i]; _logger.LogInformation($"Market by price pull {msg.ParseSymbolFromTopic()} | [bid {i}: price={bid.Price} size={bid.Size}]"); } for (var i = 0; i < msg.Data?.Asks.Length; ++i) { var bid = msg.Data.Asks[i]; _logger.LogInformation($"Market by price pull {msg.ParseSymbolFromTopic()} | [ask {i}: price={bid.Price} size={bid.Size}]"); } }
private OrderBookLevel[] ConvertLevels(MarketByPricePullResponse response) { var symbol = response.ParseSymbolFromTopic(); return(ConvertLevels(symbol, response.Data?.Bids, response.Data?.Asks)); }