// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System.Threading; using Microsoft.AspNetCore.Hosting; namespace Microsoft.AspNetCore.Http.Connections.Tests { public class TestApplicationLifetime : IApplicationLifetime { private readonly CancellationTokenSource _startedSource = new CancellationTokenSource(); private readonly CancellationTokenSource _stoppingSource = new CancellationTokenSource(); private readonly CancellationTokenSource _stoppedSource = new CancellationTokenSource(); public CancellationToken ApplicationStarted => _startedSource.Token; public CancellationToken ApplicationStopping => _stoppingSource.Token; public CancellationToken ApplicationStopped => _stoppedSource.Token; public void StopApplication() { _stoppingSource.Cancel(throwOnFirstException: false); } public void Start() { _startedSource.Cancel(throwOnFirstException: false); } } public class EmptyApplicationLifetime : IApplicationLifetime { public CancellationToken ApplicationStarted => CancellationToken.None; public CancellationToken ApplicationStopping => CancellationToken.None; public CancellationToken ApplicationStopped => CancellationToken.None; public void StopApplication() { } } }