public AllSubscriptionFiltered(IPublisher bus, Position?startPosition, bool resolveLinks, IEventFilter eventFilter, ClaimsPrincipal user, bool requiresLeader, IReadIndex readIndex, uint?maxSearchWindow, uint checkpointIntervalMultiplier, Func <Position, Task> checkpointReached, CancellationToken cancellationToken) { if (bus == null) { throw new ArgumentNullException(nameof(bus)); } if (eventFilter == null) { throw new ArgumentNullException(nameof(eventFilter)); } if (readIndex == null) { throw new ArgumentNullException(nameof(readIndex)); } if (checkpointReached == null) { throw new ArgumentNullException(nameof(checkpointReached)); } if (checkpointIntervalMultiplier == 0) { throw new ArgumentOutOfRangeException(nameof(checkpointIntervalMultiplier)); } _subscriptionId = Guid.NewGuid(); _bus = bus; _resolveLinks = resolveLinks; _eventFilter = eventFilter; _user = user; _requiresLeader = requiresLeader; _readIndex = readIndex; _maxSearchWindow = maxSearchWindow; _checkpointIntervalMultiplier = checkpointIntervalMultiplier; _checkpointReached = checkpointReached; _cancellationToken = cancellationToken; _subscriptionStarted = new TaskCompletionSource <bool>(); _subscriptionStarted.SetResult(true); _inner = startPosition == Position.End ? (IStreamSubscription) new LiveStreamSubscription(_subscriptionId, _bus, Position.FromInt64(_readIndex.LastIndexedPosition, _readIndex.LastIndexedPosition), _resolveLinks, _eventFilter, _user, _requiresLeader, _maxSearchWindow, _checkpointIntervalMultiplier, checkpointReached, _cancellationToken) : new CatchupAllSubscription(_subscriptionId, bus, startPosition ?? Position.Start, resolveLinks, _eventFilter, user, _requiresLeader, readIndex, _maxSearchWindow, _checkpointIntervalMultiplier, checkpointReached, cancellationToken); }
public AllSubscriptionFiltered(IPublisher bus, Position position, bool resolveLinks, IEventFilter eventFilter, IPrincipal user, IReadIndex readIndex, CancellationToken cancellationToken) { if (bus == null) { throw new ArgumentNullException(nameof(bus)); } if (readIndex == null) { throw new ArgumentNullException(nameof(readIndex)); } if (eventFilter == null) { throw new ArgumentNullException(nameof(eventFilter)); } _bus = bus; _nextPosition = position; _resolveLinks = resolveLinks; _eventFilter = eventFilter; _user = user; _readIndex = readIndex; _disposedTokenSource = new CancellationTokenSource(); _buffer = new ConcurrentQueue <ResolvedEvent>(); _tokenRegistration = cancellationToken.Register(_disposedTokenSource.Dispose); }
public CatchupAllSubscription(Guid subscriptionId, IPublisher bus, Position position, bool resolveLinks, IEventFilter eventFilter, ClaimsPrincipal user, bool requiresLeader, IReadIndex readIndex, uint?maxWindowSize, uint checkpointIntervalMultiplier, Func <Position, Task> checkpointReached, CancellationToken cancellationToken) { if (bus == null) { throw new ArgumentNullException(nameof(bus)); } if (eventFilter == null) { throw new ArgumentNullException(nameof(eventFilter)); } if (readIndex == null) { throw new ArgumentNullException(nameof(readIndex)); } if (checkpointReached == null) { throw new ArgumentNullException(nameof(checkpointReached)); } if (checkpointIntervalMultiplier == 0) { throw new ArgumentOutOfRangeException(nameof(checkpointIntervalMultiplier)); } _subscriptionId = subscriptionId; _bus = bus; _nextPosition = position == Position.End ? Position.FromInt64(readIndex.LastIndexedPosition, readIndex.LastIndexedPosition) : position; _startPosition = position == Position.End ? Position.Start : position; _resolveLinks = resolveLinks; _eventFilter = eventFilter; _user = user; _requiresLeader = requiresLeader; _checkpointIntervalMultiplier = checkpointIntervalMultiplier; _checkpointReached = checkpointReached; _maxWindowSize = maxWindowSize ?? ReadBatchSize; _disposedTokenSource = new CancellationTokenSource(); _buffer = new ConcurrentQueueWrapper <(ResolvedEvent, Position?)>(); _tokenRegistration = cancellationToken.Register(_disposedTokenSource.Dispose); _currentPosition = _startPosition; _checkpointInterval = 0; Log.Information("Catch-up subscription {subscriptionId} to $all:{eventFilter} running...", _subscriptionId, _eventFilter); }
public ReadAllBackwardsFiltered(IPublisher bus, Position position, ulong maxCount, bool resolveLinks, IEventFilter eventFilter, uint?maxSearchWindow, ClaimsPrincipal user, bool requiresLeader, DateTime deadline, CancellationToken cancellationToken) { if (bus == null) { throw new ArgumentNullException(nameof(bus)); } if (eventFilter == null) { throw new ArgumentNullException(nameof(eventFilter)); } if (maxCount <= 0) { throw new ArgumentOutOfRangeException(nameof(maxCount)); } if (maxSearchWindow.HasValue && maxSearchWindow.Value <= maxCount) { throw new ArgumentOutOfRangeException(nameof(maxSearchWindow)); } _bus = bus; _nextPosition = position; _maxCount = maxCount; _eventFilter = eventFilter; _maxSearchWindow = maxSearchWindow ?? (uint)maxCount; _resolveLinks = resolveLinks; _user = user; _requiresLeader = requiresLeader; _deadline = deadline; _disposedTokenSource = new CancellationTokenSource(); _buffer = new ConcurrentQueue <ResolvedEvent>(); _tokenRegistration = cancellationToken.Register(_disposedTokenSource.Dispose); }