private async Task PrepareEngineAsync(Func <IEnumerable <string> > getIpAddresses, CancellationToken cancellationToken)
        {
            // Create a new pool
            var newPoolName = await _client.IpPools.CreateAsync(_warmupSettings.PoolName, cancellationToken).ConfigureAwait(false);

            // Get the ip addresses
            var ipAddresses = getIpAddresses().ToArray();

            // Add each address to the new pool
            foreach (var ipAddress in ipAddresses)
            {
                await _client.IpPools.AddAddressAsync(newPoolName, ipAddress, cancellationToken).ConfigureAwait(false);
            }

            // Record the start of process
            var warmupStatus = new WarmupStatus()
            {
                Completed         = false,
                DateLastSent      = DateTime.MinValue,
                EmailsSentLastDay = 0,
                IpAddresses       = ipAddresses,
                PoolName          = newPoolName,
                WarmupDay         = 0
            };
            await _warmupProgressRepository.UpdateStatusAsync(warmupStatus, cancellationToken).ConfigureAwait(false);
        }
        private void CreateOrUpdateStatusFile(WarmupStatus warmupStatus)
        {
            var fileName = GetStatusFilePath(warmupStatus.PoolName);

            using (var streamWriter = File.CreateText(fileName))
            {
                var serializer = new JsonSerializer()
                {
                    Formatting = Formatting.Indented
                };
                serializer.Serialize(streamWriter, warmupStatus);
            }
        }
示例#3
0
        /// <summary>
        /// Update the progress of the warmup proces for a given pool.
        /// </summary>
        /// <param name="warmupStatus">The status of the warmup process.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns>The task.</returns>
        public Task UpdateStatusAsync(WarmupStatus warmupStatus, CancellationToken cancellationToken = default)
        {
            var fileName = GetStatusFilePath(warmupStatus.PoolName);

            using (var stream = File.Create(fileName))
            {
                var options = new JsonSerializerOptions()
                {
                    WriteIndented = false
                };

                return(JsonSerializer.SerializeAsync(stream, warmupStatus, options, cancellationToken));
            }
        }
 /// <summary>
 /// Update the progress of the warmup proces for a given pool.
 /// </summary>
 /// <param name="warmupStatus">The status of the warmup process</param>
 /// <param name="cancellationToken">The cancellation token</param>
 /// <returns>The task</returns>
 public Task UpdateStatusAsync(WarmupStatus warmupStatus, CancellationToken cancellationToken = default(CancellationToken))
 {
     _progressInfo[warmupStatus.PoolName] = warmupStatus;
     return(Task.FromResult(true));
 }
        /// <summary>
        /// Update the progress of the warmup proces for a given pool.
        /// </summary>
        /// <param name="warmupStatus">The status of the warmup process.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns>The task.</returns>
        public Task UpdateStatusAsync(WarmupStatus warmupStatus, CancellationToken cancellationToken = default(CancellationToken))
        {
            CreateOrUpdateStatusFile(warmupStatus);

            return(Task.FromResult(true));
        }