public async Task RegisterAsync(IStorageBlobContainer container, ITriggerExecutor <IStorageBlob> triggerExecutor, CancellationToken cancellationToken) { // Register and Execute are not concurrency-safe. // Avoiding calling Register while Execute is running is the caller's responsibility. ThrowIfDisposed(); // Register all in logPolling, there is no problem if we get 2 notifications of the new blob await _pollLogStrategy.RegisterAsync(container, triggerExecutor, cancellationToken); ContainerScanInfo containerScanInfo; if (!_scanInfo.TryGetValue(container, out containerScanInfo)) { containerScanInfo = new ContainerScanInfo() { Registrations = new List <ITriggerExecutor <IStorageBlob> >(), LastSweepCycleLatestModified = DateTime.MinValue, CurrentSweepCycleLatestModified = DateTime.MinValue, ContinuationToken = null }; _scanInfo.Add(container, containerScanInfo); } containerScanInfo.Registrations.Add(triggerExecutor); }
public async Task RegisterAsync(BlobServiceClient blobServiceClient, BlobContainerClient container, ITriggerExecutor <BlobTriggerExecutorContext> triggerExecutor, CancellationToken cancellationToken) { // Register and Execute are not concurrency-safe. // Avoiding calling Register while Execute is running is the caller's responsibility. ThrowIfDisposed(); // Register all in logPolling, there is no problem if we get 2 notifications of the new blob await _pollLogStrategy.RegisterAsync(blobServiceClient, container, triggerExecutor, cancellationToken).ConfigureAwait(false); if (!_scanInfo.TryGetValue(container, out ContainerScanInfo containerScanInfo)) { // First, try to load serialized scanInfo for this container. DateTime?latestStoredScan = await _blobScanInfoManager.LoadLatestScanAsync(blobServiceClient.AccountName, container.Name).ConfigureAwait(false); containerScanInfo = new ContainerScanInfo() { Registrations = new List <ITriggerExecutor <BlobTriggerExecutorContext> >(), LastSweepCycleLatestModified = latestStoredScan ?? DateTime.MinValue, CurrentSweepCycleLatestModified = DateTime.MinValue, ContinuationToken = null }; Logger.InitializedScanInfo(_logger, container.Name, containerScanInfo.LastSweepCycleLatestModified); _scanInfo.Add(container, containerScanInfo); } containerScanInfo.Registrations.Add(triggerExecutor); }