| File: DelegationRule.cs | Web Access |
| Project: src\aspnetcore\src\Servers\HttpSys\src\Microsoft.AspNetCore.Server.HttpSys.csproj (Microsoft.AspNetCore.Server.HttpSys) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.Logging; namespace Microsoft.AspNetCore.Server.HttpSys; /// <summary> /// Rule that maintains a handle to the Request Queue and UrlPrefix to /// delegate to. /// </summary> public class DelegationRule : IDisposable { private readonly ILogger _logger; private readonly UrlGroup _sourceQueueUrlGroup; private bool _disposed; /// <summary> /// The name of the Http.Sys request queue /// </summary> public string QueueName { get; } /// <summary> /// The URL of the Http.Sys Url Prefix /// </summary> public string UrlPrefix { get; } internal RequestQueue Queue { get; } internal DelegationRule(UrlGroup sourceQueueUrlGroup, string queueName, string urlPrefix, ILogger logger) { _sourceQueueUrlGroup = sourceQueueUrlGroup; _logger = logger; QueueName = queueName; UrlPrefix = urlPrefix; Queue = new RequestQueue(queueName, _logger); } /// <inheritdoc /> public void Dispose() { if (_disposed) { return; } _disposed = true; try { _sourceQueueUrlGroup.UnSetDelegationProperty(Queue, throwOnError: false); } catch (ObjectDisposedException) { /* Server may have been shutdown */ } Queue.Dispose(); } }