File: NativeInterop\ServerSession.cs
Web Access
Project: src\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 System.Diagnostics;
using Windows.Win32;
 
namespace Microsoft.AspNetCore.Server.HttpSys;
 
internal sealed class ServerSession : IDisposable
{
    internal unsafe ServerSession()
    {
        ulong serverSessionId = 0;
        var statusCode = PInvoke.HttpCreateServerSession(
            HttpApi.Version, &serverSessionId, 0);
 
        if (statusCode != ErrorCodes.ERROR_SUCCESS)
        {
            throw new HttpSysException((int)statusCode);
        }
 
        Debug.Assert(serverSessionId != 0, "Invalid id returned by HttpCreateServerSession");
 
        Id = new HttpServerSessionHandle(serverSessionId);
    }
 
    public HttpServerSessionHandle Id { get; private set; }
 
    public void Dispose()
    {
        Id.Dispose();
    }
}