public LeaseAllocator( IBigBrother telemetry, ILeaseStore leaseStore, ISlottedInterval slottedInterval, IOptions <WorkerLeaseOptions> options) { _telemetry = telemetry ?? throw new ArgumentNullException(nameof(telemetry)); _leaseStore = leaseStore ?? throw new ArgumentNullException(nameof(leaseStore)); _slottedInterval = slottedInterval ?? throw new ArgumentNullException(nameof(slottedInterval)); _options = options ?? throw new ArgumentNullException(nameof(options)); }
/// <summary> /// Initializes a new instance of the <see cref="DocumentServiceLeaseStoreManager"/> class. /// </summary> /// <remarks> /// Internal only for testing purposes, otherwise would be private. /// </remarks> internal DocumentServiceLeaseStoreManager( DocumentServiceLeaseStoreManagerSettings settings, IChangeFeedDocumentClient leaseDocumentClient, IRequestOptionsFactory requestOptionsFactory, IDocumentServiceLeaseUpdater leaseUpdater) // For testing purposes only. { if (settings == null) { throw new ArgumentNullException(nameof(settings)); } if (settings.LeaseCollectionInfo == null) { throw new ArgumentNullException(nameof(settings.LeaseCollectionInfo)); } if (settings.ContainerNamePrefix == null) { throw new ArgumentNullException(nameof(settings.ContainerNamePrefix)); } if (settings.LeaseCollectionLink == null) { throw new ArgumentNullException(nameof(settings.LeaseCollectionLink)); } if (string.IsNullOrEmpty(settings.HostName)) { throw new ArgumentNullException(nameof(settings.HostName)); } if (leaseDocumentClient == null) { throw new ArgumentNullException(nameof(leaseDocumentClient)); } if (requestOptionsFactory == null) { throw new ArgumentException(nameof(requestOptionsFactory)); } if (leaseUpdater == null) { throw new ArgumentException(nameof(leaseUpdater)); } this.settings = settings; this.client = leaseDocumentClient; this.requestOptionsFactory = requestOptionsFactory; this.leaseUpdater = leaseUpdater; this.leaseStore = new DocumentServiceLeaseStore( this.client, this.settings.LeaseCollectionInfo, this.settings.ContainerNamePrefix, this.settings.LeaseCollectionLink, this.requestOptionsFactory); }
public Bootstrapper(IPartitionSynchronizer synchronizer, ILeaseStore leaseStore, TimeSpan lockTime, TimeSpan sleepTime) { if (synchronizer == null) { throw new ArgumentNullException(nameof(synchronizer)); } if (leaseStore == null) { throw new ArgumentNullException(nameof(leaseStore)); } if (lockTime <= TimeSpan.Zero) { throw new ArgumentException("should be positive", nameof(lockTime)); } if (sleepTime <= TimeSpan.Zero) { throw new ArgumentException("should be positive", nameof(sleepTime)); } this.synchronizer = synchronizer; this.leaseStore = leaseStore; this.lockTime = lockTime; this.sleepTime = sleepTime; }
private async Task <long> ConsumeEvents( Action <IEnumerable <EventBase> > onEventReceived, ICommitTrailStore commitLogs, ILeaseStore leaseStore, long recentCommitId, long offsetCommitId) { // we have commits to take care ... var logs = (await commitLogs .GetCommitsAsync(offsetCommitId, recentCommitId) .ConfigureAwait(false)) .Where(log => log.StreamName.Equals(this._streamName, StringComparison.OrdinalIgnoreCase)); if (logs.Any()) { var stream = await GetStreamAsync(commitLogs).ConfigureAwait(false); var events = await stream.ReadEventsAsync(logs).ConfigureAwait(false); onEventReceived(events); await leaseStore.SetOffsetCommitIdAsync((offsetCommitId = recentCommitId)); } return(offsetCommitId); }