aspnetcore/src/Microsoft.AspNetCore.Server.../Core/IISNativeApplication.cs

58 lines
1.7 KiB
C#

// 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;
using System.IO;
namespace Microsoft.AspNetCore.Server.IIS.Core
{
internal class IISNativeApplication
{
private readonly IntPtr _nativeApplication;
public IISNativeApplication(IntPtr nativeApplication)
{
_nativeApplication = nativeApplication;
}
public void StopIncomingRequests()
{
NativeMethods.HttpStopIncomingRequests(_nativeApplication);
}
public void StopCallsIntoManaged()
{
NativeMethods.HttpStopCallsIntoManaged(_nativeApplication);
}
public void RegisterCallbacks(
NativeMethods.PFN_REQUEST_HANDLER requestHandler,
NativeMethods.PFN_SHUTDOWN_HANDLER shutdownHandler,
NativeMethods.PFN_DISCONNECT_HANDLER disconnectHandler,
NativeMethods.PFN_ASYNC_COMPLETION onAsyncCompletion,
IntPtr requestContext,
IntPtr shutdownContext)
{
NativeMethods.HttpRegisterCallbacks(
_nativeApplication,
requestHandler,
shutdownHandler,
disconnectHandler,
onAsyncCompletion,
requestContext,
shutdownContext);
}
public void Dispose()
{
GC.SuppressFinalize(this);
}
~IISNativeApplication()
{
// If this finalize is invoked, try our best to block all calls into managed.
StopCallsIntoManaged();
}
}
}