public async Task <StreamHandshakeToken> DeliverBatch(IBatchContainer batch, StreamHandshakeToken handshakeToken) { // we validate expectedToken only for ordered (rewindable) streams if (expectedToken != null) { if (!expectedToken.Equals(handshakeToken)) { return(expectedToken); } } if (batch is IBatchContainerBatch) { var batchContainerBatch = batch as IBatchContainerBatch; await NextBatch(batchContainerBatch); } else { foreach (var itemTuple in batch.GetEvents <T>()) { await NextItem(itemTuple.Item1, itemTuple.Item2); } } if (IsRewindable) { expectedToken = StreamHandshakeToken.CreateDeliveyToken(batch.SequenceToken); } return(null); }
public async Task <StreamHandshakeToken> DeliverBatch(IBatchContainer batch, StreamHandshakeToken handshakeToken) { if (expectedToken != null) { if (!expectedToken.Equals(handshakeToken)) { return(expectedToken); } } foreach (var itemTuple in batch.GetEvents <T>()) { await NextItem(itemTuple.Item1, itemTuple.Item2); } expectedToken = StreamHandshakeToken.CreateDeliveyToken(batch.SequenceToken); return(null); }