/// <summary> /// Creates a background operation manager for a given queue. /// </summary> /// <param name="vaultApplication">The vault application that contains this background operation manager.</param> /// <param name="queueId">The queue Id.</param> /// <param name="cancellationTokenSource">The cancellation token source, if cancellation should be supported.</param> public TaskQueueBackgroundOperationManager ( ConfigurableVaultApplicationBase <TSecureConfiguration> vaultApplication, CancellationTokenSource cancellationTokenSource = default ) : this ( vaultApplication, $"{vaultApplication?.GetType()?.FullName?.Replace(".", "-")}-BackgroundOperations", cancellationTokenSource ) { }
public TaskManagerEx ( ConfigurableVaultApplicationBase <TConfiguration> vaultApplication, string id, Vault permanentVault, IVaultTransactionRunner transactionRunner, TimeSpan?processingInterval = null, uint maxConcurrency = 16, TimeSpan?maxLockWaitTime = null, TaskExceptionSettings exceptionSettings = null ) : base(id, permanentVault, transactionRunner, processingInterval, maxConcurrency, maxLockWaitTime, exceptionSettings) { this.VaultApplication = vaultApplication ?? throw new ArgumentNullException(nameof(vaultApplication)); this.TaskEvent += TaskManagerEx_TaskEvent; }
/// <summary> /// Ensures that <see cref="CurrentServer"/> is set correctly. /// </summary> /// <param name="vaultApplication">The vault application where this code is running.</param> internal static void SetCurrentServer(ConfigurableVaultApplicationBase <TSecureConfiguration> vaultApplication) { // Sanity. if (null == vaultApplication) { throw new ArgumentNullException(nameof(vaultApplication)); } // Ensure that we have a current server. lock (_lock) { if (null == CurrentServer) { CurrentServer = vaultApplication .PermanentVault? .GetVaultServerAttachments()? .GetCurrent(); } } }
/// <summary> /// Creates a background operation manager for a given queue. /// </summary> /// <param name="vaultApplication">The vault application that contains this background operation manager.</param> /// <param name="queueId">The queue Id.</param> /// <param name="cancellationTokenSource">The cancellation token source, if cancellation should be supported.</param> public TaskQueueBackgroundOperationManager ( ConfigurableVaultApplicationBase <TSecureConfiguration> vaultApplication, string queueId, CancellationTokenSource cancellationTokenSource = default ) { // Sanity. if (string.IsNullOrWhiteSpace(queueId)) { throw new ArgumentException("The queue id cannot be null or whitespace.", nameof(queueId)); } // Assign. this.CancellationTokenSource = cancellationTokenSource; this.VaultApplication = vaultApplication ?? throw new ArgumentNullException(nameof(vaultApplication)); this.QueueId = queueId; // Set up the task processor. this.TaskProcessor = new AppTasks.TaskProcessor <BackgroundOperationTaskDirective> ( TaskQueueBackgroundOperation <BackgroundOperationTaskDirective, TSecureConfiguration> .TaskTypeId, new AppTasks.TaskProcessor.Handler <BackgroundOperationTaskDirective>(ProcessJobHandler), transactionMode: AppTasks.TransactionMode.Unsafe // We have to be unsafe for backwards compatibility. ); // Set up the task queue processor. this.TaskQueueProcessor = this .VaultApplication .TaskManager .RegisterQueue ( this.QueueId, new[] { this.TaskProcessor } ); // Ensure we have a current server. SetCurrentServer(vaultApplication); }
public RecurringOperationConfigurationManager(ConfigurableVaultApplicationBase <TSecureConfiguration> vaultApplication) { this.VaultApplication = vaultApplication ?? throw new ArgumentNullException(nameof(vaultApplication)); }