public override int GetHashCode() { unchecked { return(((TokenAtReset != null ? TokenAtReset.GetHashCode() : 0) * 397) ^ (CurrentToken != null ? CurrentToken.GetHashCode() : 0)); } }
public ITrackingToken AdvancedTo(ITrackingToken newToken) { if (TokenAtReset == null || (newToken.Covers(this.TokenAtReset) && !TokenAtReset.Covers(newToken))) { // we're done replaying return(newToken); } else if (TokenAtReset.Covers(newToken)) { // we're still well behind return(new ReplayToken(TokenAtReset, newToken)); } else { // we're getting an event that we didn't have before, but we haven't finished replaying either return(new ReplayToken(TokenAtReset.UpperBound(newToken), newToken)); } }
private bool IsReplay() => CurrentToken == null || TokenAtReset.Covers(CurrentToken);