public async Task ProcessStreamItem(StreamTrade trade) { StreamTrade currentTrade = null; bool found = _trades.TryGetValue(trade.Id, out currentTrade); switch (trade.Operation) { case StreamOperation.Insert: case StreamOperation.Update: if (!found || currentTrade.Compare(trade) != 0) { if (_persistenceLayer != null) { await _persistenceLayer.ProcessStreamItem(trade); } } _trades[trade.Id] = trade; break; case StreamOperation.Delete: if (found) { if (_persistenceLayer != null) { await _persistenceLayer.ProcessStreamItem(trade); } _trades.TryRemove(trade.Id, out currentTrade); } break; default: break; } }
public virtual Task TradeUpdated(StreamTrade streamItem) { return(Task.CompletedTask); }
public override Task TradeUpdated(StreamTrade streamItem) { return(_dataLayer.ProcessStreamItem(streamItem)); }