diff options
Diffstat (limited to 'lib')
18 files changed, 173 insertions, 58 deletions
diff --git a/lib/Hashing.Portable/src/VNLib.Hashing.Portable.csproj b/lib/Hashing.Portable/src/VNLib.Hashing.Portable.csproj index 7e31e0c..da61ae1 100644 --- a/lib/Hashing.Portable/src/VNLib.Hashing.Portable.csproj +++ b/lib/Hashing.Portable/src/VNLib.Hashing.Portable.csproj @@ -1,18 +1,21 @@ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> - <TargetFramework>net8.0</TargetFramework> + <TargetFramework>net8.0</TargetFramework> + <Nullable>enable</Nullable> <AssemblyName>VNLib.Hashing.Portable</AssemblyName> <RootNamespace>VNLib.Hashing</RootNamespace> - <AllowUnsafeBlocks>True</AllowUnsafeBlocks> - <Nullable>enable</Nullable> - <AnalysisLevel>latest-all</AnalysisLevel> + <AllowUnsafeBlocks>True</AllowUnsafeBlocks> <ProduceReferenceAssembly>True</ProduceReferenceAssembly> <GenerateDocumentationFile>True</GenerateDocumentationFile> <RunAnalyzersDuringBuild>false</RunAnalyzersDuringBuild> </PropertyGroup> <PropertyGroup> + <AnalysisLevel Condition="'$(BuildingInsideVisualStudio)' == true">latest-all</AnalysisLevel> + </PropertyGroup> + + <PropertyGroup> <Product>VNLib Hashing Function/Alg Library</Product> <Description>Provides managed and random cryptocraphic hashing helper classes, including complete Argon2 password hashing.</Description> <Authors>Vaughn Nugent</Authors> diff --git a/lib/Net.Compression/VNLib.Net.Compression/VNLib.Net.Compression.csproj b/lib/Net.Compression/VNLib.Net.Compression/VNLib.Net.Compression.csproj index 14672ae..c5b428e 100644 --- a/lib/Net.Compression/VNLib.Net.Compression/VNLib.Net.Compression.csproj +++ b/lib/Net.Compression/VNLib.Net.Compression/VNLib.Net.Compression.csproj @@ -2,19 +2,21 @@ <PropertyGroup> <TargetFramework>net8.0</TargetFramework> + <Nullable>enable</Nullable> <RootNamespace>VNLib.Net.Compression</RootNamespace> <AssemblyName>VNLib.Net.Compression</AssemblyName> <AllowUnsafeBlocks>true</AllowUnsafeBlocks> - <Nullable>enable</Nullable> <GenerateDocumentationFile>True</GenerateDocumentationFile> - <AnalysisLevel>latest-all</AnalysisLevel> <RunAnalyzersDuringBuild>false</RunAnalyzersDuringBuild> - <!--Enable dynamic loading because it's dynamically loaded by servers--> <EnableDynamicLoading>true</EnableDynamicLoading> </PropertyGroup> <PropertyGroup> + <AnalysisLevel Condition="'$(BuildingInsideVisualStudio)' == true">latest-all</AnalysisLevel> + </PropertyGroup> + + <PropertyGroup> <PackageId>VNLib.Net.Compression</PackageId> <Authors>Vaughn Nugent</Authors> <Company>Vaughn Nugent</Company> diff --git a/lib/Net.Http/src/VNLib.Net.Http.csproj b/lib/Net.Http/src/VNLib.Net.Http.csproj index b491cc1..e57f784 100644 --- a/lib/Net.Http/src/VNLib.Net.Http.csproj +++ b/lib/Net.Http/src/VNLib.Net.Http.csproj @@ -2,16 +2,19 @@ <PropertyGroup> <TargetFramework>net8.0</TargetFramework> + <Nullable>enable</Nullable> <RootNamespace>VNLib.Net.Http</RootNamespace> <AssemblyName>VNLib.Net.Http</AssemblyName> <NeutralLanguage>en-US</NeutralLanguage> - <Nullable>enable</Nullable> <GenerateDocumentationFile>True</GenerateDocumentationFile> - <AnalysisLevel>latest-all</AnalysisLevel> <RunAnalyzersDuringBuild>false</RunAnalyzersDuringBuild> </PropertyGroup> <PropertyGroup> + <AnalysisLevel Condition="'$(BuildingInsideVisualStudio)' == true">latest-all</AnalysisLevel> + </PropertyGroup> + + <PropertyGroup> <PackageId>VNLib.Net.Http</PackageId> <Authors>Vaughn Nugent</Authors> <Company>Vaughn Nugent</Company> diff --git a/lib/Net.Messaging.FBM/src/VNLib.Net.Messaging.FBM.csproj b/lib/Net.Messaging.FBM/src/VNLib.Net.Messaging.FBM.csproj index 667dfed..897bca5 100644 --- a/lib/Net.Messaging.FBM/src/VNLib.Net.Messaging.FBM.csproj +++ b/lib/Net.Messaging.FBM/src/VNLib.Net.Messaging.FBM.csproj @@ -2,15 +2,18 @@ <PropertyGroup> <TargetFramework>net8.0</TargetFramework> + <Nullable>enable</Nullable> <RootNamespace>VNLib.Net.Messaging.FBM</RootNamespace> <AssemblyName>VNLib.Net.Messaging.FBM</AssemblyName> - <Nullable>enable</Nullable> - <AnalysisLevel>latest-all</AnalysisLevel> <GenerateDocumentationFile>True</GenerateDocumentationFile> <RunAnalyzersDuringBuild>false</RunAnalyzersDuringBuild> </PropertyGroup> <PropertyGroup> + <AnalysisLevel Condition="'$(BuildingInsideVisualStudio)' == true">latest-all</AnalysisLevel> + </PropertyGroup> + + <PropertyGroup> <PackageId>VNLib.Net.Messaging.FBM</PackageId> <Authors>Vaughn Nugent</Authors> <Company>Vaughn Nugent</Company> diff --git a/lib/Net.Rest.Client/src/VNLib.Net.Rest.Client.csproj b/lib/Net.Rest.Client/src/VNLib.Net.Rest.Client.csproj index c7a4151..b127800 100644 --- a/lib/Net.Rest.Client/src/VNLib.Net.Rest.Client.csproj +++ b/lib/Net.Rest.Client/src/VNLib.Net.Rest.Client.csproj @@ -6,11 +6,14 @@ <AssemblyName>VNLib.Net.Rest.Client</AssemblyName> <RootNamespace>VNLib.Net.Rest.Client</RootNamespace> <GenerateDocumentationFile>True</GenerateDocumentationFile> - <AnalysisLevel>latest-all</AnalysisLevel> <RunAnalyzersDuringBuild>false</RunAnalyzersDuringBuild> </PropertyGroup> <PropertyGroup> + <AnalysisLevel Condition="'$(BuildingInsideVisualStudio)' == true">latest-all</AnalysisLevel> + </PropertyGroup> + + <PropertyGroup> <PackageId>VNLib.Net.Rest.Client</PackageId> <Company>Vaughn Nugent</Company> <Authors>Vaughn Nugent</Authors> diff --git a/lib/Net.Transport.SimpleTCP/src/VNLib.Net.Transport.SimpleTCP.csproj b/lib/Net.Transport.SimpleTCP/src/VNLib.Net.Transport.SimpleTCP.csproj index e999072..630a0db 100644 --- a/lib/Net.Transport.SimpleTCP/src/VNLib.Net.Transport.SimpleTCP.csproj +++ b/lib/Net.Transport.SimpleTCP/src/VNLib.Net.Transport.SimpleTCP.csproj @@ -2,15 +2,18 @@ <PropertyGroup> <TargetFramework>net8.0</TargetFramework> + <Nullable>enable</Nullable> <RootNamespace>VNLib.Net.Transport</RootNamespace> <AssemblyName>VNLib.Net.Transport.SimpleTCP</AssemblyName> - <Nullable>enable</Nullable> <GenerateDocumentationFile>True</GenerateDocumentationFile> - <AnalysisLevel>latest-all</AnalysisLevel> <RunAnalyzersDuringBuild>false</RunAnalyzersDuringBuild> </PropertyGroup> <PropertyGroup> + <AnalysisLevel Condition="'$(BuildingInsideVisualStudio)' == true">latest-all</AnalysisLevel> + </PropertyGroup> + + <PropertyGroup> <PackageId>VNLib.Net.Transport.SimpleTCP</PackageId> <Product>VNLib Simple Transport Library</Product> <PackageTags>vnlib, tcp, transport, simpletcp, networking</PackageTags> diff --git a/lib/Plugins.Essentials.ServiceStack/src/VNLib.Plugins.Essentials.ServiceStack.csproj b/lib/Plugins.Essentials.ServiceStack/src/VNLib.Plugins.Essentials.ServiceStack.csproj index 7dc12b6..4aedb80 100644 --- a/lib/Plugins.Essentials.ServiceStack/src/VNLib.Plugins.Essentials.ServiceStack.csproj +++ b/lib/Plugins.Essentials.ServiceStack/src/VNLib.Plugins.Essentials.ServiceStack.csproj @@ -2,16 +2,18 @@ <PropertyGroup> <TargetFramework>net8.0</TargetFramework> + <Nullable>enable</Nullable> <RootNamespace>VNLib.Plugins.Essentials.ServiceStack</RootNamespace> <AssemblyName>VNLib.Plugins.Essentials.ServiceStack</AssemblyName> - <Nullable>enable</Nullable> <GenerateDocumentationFile>True</GenerateDocumentationFile> - <PackageReadmeFile>README.md</PackageReadmeFile> - <AnalysisLevel>latest-all</AnalysisLevel> <RunAnalyzersDuringBuild>false</RunAnalyzersDuringBuild> </PropertyGroup> <PropertyGroup> + <AnalysisLevel Condition="'$(BuildingInsideVisualStudio)' == true">latest-all</AnalysisLevel> + </PropertyGroup> + + <PropertyGroup> <Authors>Vaughn Nugent</Authors> <Company>Vaughn Nugent</Company> <PackageId>VNLib.Plugins.Essentials.ServiceStack</PackageId> @@ -20,6 +22,7 @@ <PackageProjectUrl>https://www.vaughnnugent.com/resources/software/modules/VNLib.Core</PackageProjectUrl> <RepositoryUrl>https://github.com/VnUgE/VNLib.Core/tree/main/lib/Plugins.Essentials.ServiceStack</RepositoryUrl> <PackageLicenseFile>LICENSE</PackageLicenseFile> + <PackageReadmeFile>README.md</PackageReadmeFile> <PackageRequireLicenseAcceptance>True</PackageRequireLicenseAcceptance> </PropertyGroup> diff --git a/lib/Plugins.Essentials/src/SemiConsistentVeTable.cs b/lib/Plugins.Essentials/src/Endpoints/SemiConsistentVeTable.cs index e1706f4..09ab151 100644 --- a/lib/Plugins.Essentials/src/SemiConsistentVeTable.cs +++ b/lib/Plugins.Essentials/src/Endpoints/SemiConsistentVeTable.cs @@ -31,11 +31,10 @@ using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using VNLib.Net.Http; -using VNLib.Plugins.Essentials.Endpoints; -namespace VNLib.Plugins.Essentials +namespace VNLib.Plugins.Essentials.Endpoints { - internal class SemiConsistentVeTable : IVirtualEndpointTable + internal sealed class SemiConsistentVeTable : IVirtualEndpointTable { /* @@ -170,7 +169,7 @@ namespace VNLib.Plugins.Essentials } ///<inheritdoc/> - public bool TryGetEndpoint(string path, [NotNullWhen(true)] out IVirtualEndpoint<HttpEntity>? endpoint) + public bool TryGetEndpoint(string path, [NotNullWhen(true)] out IVirtualEndpoint<HttpEntity>? endpoint) => VirtualEndpoints.TryGetValue(path, out endpoint); diff --git a/lib/Plugins.Essentials/src/EventProcessor.cs b/lib/Plugins.Essentials/src/EventProcessor.cs index f052c56..ba7aa3c 100644 --- a/lib/Plugins.Essentials/src/EventProcessor.cs +++ b/lib/Plugins.Essentials/src/EventProcessor.cs @@ -28,7 +28,6 @@ using System.Net; using System.Threading; using System.Net.Sockets; using System.Threading.Tasks; -using System.Collections.Generic; using System.Collections.Immutable; using System.Runtime.CompilerServices; @@ -40,8 +39,8 @@ using VNLib.Plugins.Essentials.Accounts; using VNLib.Plugins.Essentials.Content; using VNLib.Plugins.Essentials.Sessions; using VNLib.Plugins.Essentials.Extensions; -using VNLib.Plugins.Essentials.Middleware; using VNLib.Plugins.Essentials.Endpoints; +using VNLib.Plugins.Essentials.Middleware; #pragma warning disable CA2007 // Consider calling ConfigureAwait on the awaited task @@ -133,7 +132,8 @@ namespace VNLib.Plugins.Essentials /// The internal service pool for the processor /// </summary> protected readonly HttpProcessorServicePool ServicePool = new([ - typeof(ISessionProvider), //Order must match the indexes above + //Order must match the indexes above + typeof(ISessionProvider), typeof(IPageRouter), typeof(IAccountSecurityProvider) ]); @@ -157,6 +157,8 @@ namespace VNLib.Plugins.Essentials get => ServicePool.ExchangeVersion(ref _accountSec, SEC_INDEX); } + private readonly MiddlewareController _middleware = new(config); + ///<inheritdoc/> public virtual async ValueTask ClientConnectedAsync(IHttpEvent httpEvent) { @@ -169,8 +171,6 @@ namespace VNLib.Plugins.Essentials ISessionProvider? sessions = ServicePool.ExchangeVersion(ref _sessions, SESS_INDEX); IPageRouter? router = ServicePool.ExchangeVersion(ref _router, ROUTER_INDEX); - LinkedListNode<IHttpMiddleware>? mwNode = config.MiddlewareChain.GetCurrentHead(); - //event cancellation token HttpEntity entity = new(httpEvent, this); @@ -205,24 +205,10 @@ namespace VNLib.Plugins.Essentials goto RespondAndExit; } - //Loop through nodes - while(mwNode != null) + //Exec middleware + if(!await _middleware.ProcessAsync(entity)) { - //Invoke mw handler on our event - entity.EventArgs = await mwNode.ValueRef.ProcessAsync(entity); - - switch (entity.EventArgs.Routine) - { - //move next if continue is returned - case FpRoutine.Continue: - break; - - //Middleware completed the connection, time to exit - default: - goto RespondAndExit; - } - - mwNode = mwNode.Next; + goto RespondAndExit; } if (!config.EndpointTable.IsEmpty) @@ -257,6 +243,9 @@ namespace VNLib.Plugins.Essentials RespondAndExit: + //Normal post-process + _middleware.PostProcess(entity); + //Call post processor method PostProcessEntity(entity, ref entity.EventArgs); } @@ -744,5 +733,5 @@ namespace VNLib.Plugins.Essentials return arr; } } - } -}
\ No newline at end of file + } +} diff --git a/lib/Plugins.Essentials/src/EventProcessorConfig.cs b/lib/Plugins.Essentials/src/EventProcessorConfig.cs index 8f401ac..6e101eb 100644 --- a/lib/Plugins.Essentials/src/EventProcessorConfig.cs +++ b/lib/Plugins.Essentials/src/EventProcessorConfig.cs @@ -29,6 +29,7 @@ using System.Collections.Frozen; using System.Collections.Generic; using VNLib.Utils.Logging; +using VNLib.Plugins.Essentials.Endpoints; using VNLib.Plugins.Essentials.Middleware; namespace VNLib.Plugins.Essentials diff --git a/lib/Plugins.Essentials/src/Middleware/IHttpMiddleware.cs b/lib/Plugins.Essentials/src/Middleware/IHttpMiddleware.cs index 83e6a06..990d59b 100644 --- a/lib/Plugins.Essentials/src/Middleware/IHttpMiddleware.cs +++ b/lib/Plugins.Essentials/src/Middleware/IHttpMiddleware.cs @@ -1,5 +1,5 @@ /* -* Copyright (c) 2023 Vaughn Nugent +* Copyright (c) 2024 Vaughn Nugent * * Library: VNLib * Package: VNLib.Plugins.Essentials @@ -40,5 +40,19 @@ namespace VNLib.Plugins.Essentials.Middleware /// <param name="entity">The entity to process</param> /// <returns>The result of the operation</returns> ValueTask<FileProcessArgs> ProcessAsync(HttpEntity entity); + + /// <summary> + /// Post processes an HTTP entity with possible file selection. May optionally mutate the + /// current arguments before the event processor completes a response. + /// </summary> + /// <param name="entity">The entity that has been processes and is ready to close</param> + /// <param name="currentArgs">The current file processor arguments</param> + /// <remarks> + /// Generally this function should simply observe results as the entity may already have been + /// configured for a response, such as by a virtual routine. You should inspect the current arguments + /// before mutating the reference. + /// </remarks> + virtual void VolatilePostProcess(HttpEntity entity, ref FileProcessArgs currentArgs) + { } } } diff --git a/lib/Plugins.Essentials/src/Middleware/MiddlewareController.cs b/lib/Plugins.Essentials/src/Middleware/MiddlewareController.cs new file mode 100644 index 0000000..2ce62b3 --- /dev/null +++ b/lib/Plugins.Essentials/src/Middleware/MiddlewareController.cs @@ -0,0 +1,77 @@ +/* +* Copyright (c) 2024 Vaughn Nugent +* +* Library: VNLib +* Package: VNLib.Plugins.Essentials +* File: MiddlewareController.cs +* +* MiddlewareController.cs is part of VNLib.Plugins.Essentials which is part +* of the larger VNLib collection of libraries and utilities. +* +* VNLib.Plugins.Essentials is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* VNLib.Plugins.Essentials is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see https://www.gnu.org/licenses/. +*/ + +using System.Threading.Tasks; +using System.Collections.Generic; + +namespace VNLib.Plugins.Essentials.Middleware +{ + internal sealed class MiddlewareController(EventProcessorConfig config) + { + private readonly IHttpMiddlewareChain _chain = config.MiddlewareChain; + + public async ValueTask<bool> ProcessAsync(HttpEntity entity) + { + LinkedListNode<IHttpMiddleware>? mwNode = _chain.GetCurrentHead(); + + //Loop through nodes + while (mwNode != null) + { + //Invoke mw handler on our event + entity.EventArgs = await mwNode.ValueRef.ProcessAsync(entity); + + switch (entity.EventArgs.Routine) + { + //move next if continue is returned + case FpRoutine.Continue: + break; + + //Middleware completed the connection, time to exit the event processing + default: + return false; + } + + mwNode = mwNode.Next; + } + + return true; + } + + public void PostProcess(HttpEntity entity) + { + LinkedListNode<IHttpMiddleware>? mwNode = _chain.GetCurrentHead(); + + //Loop through nodes + while (mwNode != null) + { + //Invoke mw handler on our event + mwNode.ValueRef.VolatilePostProcess(entity, ref entity.EventArgs); + + mwNode = mwNode.Next; + } + } + } + + +}
\ No newline at end of file diff --git a/lib/Plugins.Essentials/src/VNLib.Plugins.Essentials.csproj b/lib/Plugins.Essentials/src/VNLib.Plugins.Essentials.csproj index 4da640a..3a21ac9 100644 --- a/lib/Plugins.Essentials/src/VNLib.Plugins.Essentials.csproj +++ b/lib/Plugins.Essentials/src/VNLib.Plugins.Essentials.csproj @@ -2,13 +2,15 @@ <PropertyGroup> <TargetFramework>net8.0</TargetFramework> + <Nullable>enable</Nullable> <RootNamespace>VNLib.Plugins.Essentials</RootNamespace> <AssemblyName>VNLib.Plugins.Essentials</AssemblyName> - <AnalysisLevel>latest-all</AnalysisLevel> - <EnableNETAnalyzers>True</EnableNETAnalyzers> <GenerateDocumentationFile>True</GenerateDocumentationFile> <RunAnalyzersDuringBuild>false</RunAnalyzersDuringBuild> - <Nullable>enable</Nullable> + </PropertyGroup> + + <PropertyGroup> + <AnalysisLevel Condition="'$(BuildingInsideVisualStudio)' == true">latest-all</AnalysisLevel> </PropertyGroup> <PropertyGroup> diff --git a/lib/Plugins.PluginBase/src/VNLib.Plugins.PluginBase.csproj b/lib/Plugins.PluginBase/src/VNLib.Plugins.PluginBase.csproj index 7be9124..57701b8 100644 --- a/lib/Plugins.PluginBase/src/VNLib.Plugins.PluginBase.csproj +++ b/lib/Plugins.PluginBase/src/VNLib.Plugins.PluginBase.csproj @@ -2,12 +2,16 @@ <PropertyGroup> <TargetFramework>net8.0</TargetFramework> + <Nullable>enable</Nullable> <RootNamespace>VNLib.Plugins</RootNamespace> <AssemblyName>VNLib.Plugins.PluginBase</AssemblyName> - <AnalysisLevel>latest-all</AnalysisLevel> <RunAnalyzersDuringBuild>false</RunAnalyzersDuringBuild> <GenerateDocumentationFile>True</GenerateDocumentationFile> </PropertyGroup> + + <PropertyGroup> + <AnalysisLevel Condition="'$(BuildingInsideVisualStudio)' == true">latest-all</AnalysisLevel> + </PropertyGroup> <PropertyGroup> <Authors>Vaughn Nugent</Authors> diff --git a/lib/Plugins.Runtime/src/VNLib.Plugins.Runtime.csproj b/lib/Plugins.Runtime/src/VNLib.Plugins.Runtime.csproj index f95a95f..002716f 100644 --- a/lib/Plugins.Runtime/src/VNLib.Plugins.Runtime.csproj +++ b/lib/Plugins.Runtime/src/VNLib.Plugins.Runtime.csproj @@ -1,16 +1,19 @@ <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> - <Nullable>enable</Nullable> <TargetFramework>net8.0</TargetFramework> + <Nullable>enable</Nullable> <RootNamespace>VNLib.Plugins.Runtime</RootNamespace> <AssemblyName>VNLib.Plugins.Runtime</AssemblyName> - <AnalysisLevel>latest-all</AnalysisLevel> <RunAnalyzersDuringBuild>false</RunAnalyzersDuringBuild> <GenerateDocumentationFile>True</GenerateDocumentationFile> </PropertyGroup> <PropertyGroup> + <AnalysisLevel Condition="'$(BuildingInsideVisualStudio)' == true">latest-all</AnalysisLevel> + </PropertyGroup> + + <PropertyGroup> <Authors>Vaughn Nugent</Authors> <Company>Vaughn Nugent</Company> <PackageId>VNLib.Plugins.Runtime</PackageId> diff --git a/lib/Plugins/src/VNLib.Plugins.csproj b/lib/Plugins/src/VNLib.Plugins.csproj index 21fb203..343d86f 100644 --- a/lib/Plugins/src/VNLib.Plugins.csproj +++ b/lib/Plugins/src/VNLib.Plugins.csproj @@ -2,15 +2,18 @@ <PropertyGroup> <TargetFramework>net8.0</TargetFramework> + <Nullable>enable</Nullable> <RootNamespace>VNLib.Plugins</RootNamespace> <AssemblyName>VNLib.Plugins</AssemblyName> - <Nullable>enable</Nullable> <GenerateDocumentationFile>True</GenerateDocumentationFile> - <AnalysisLevel>latest-all</AnalysisLevel> <RunAnalyzersDuringBuild>false</RunAnalyzersDuringBuild> </PropertyGroup> <PropertyGroup> + <AnalysisLevel Condition="'$(BuildingInsideVisualStudio)' == true">latest-all</AnalysisLevel> + </PropertyGroup> + + <PropertyGroup> <Authors>Vaughn Nugent</Authors> <Company>Vaughn Nugent</Company> <PackageId>VNLib.Plugins</PackageId> diff --git a/lib/Utils/src/Memory/NativeHeap.cs b/lib/Utils/src/Memory/NativeHeap.cs index 6381dd9..fb9612c 100644 --- a/lib/Utils/src/Memory/NativeHeap.cs +++ b/lib/Utils/src/Memory/NativeHeap.cs @@ -106,7 +106,7 @@ namespace VNLib.Utils.Memory private HeapMethods MethodTable; - private unsafe NativeHeap(UnmanagedHeapDescriptor* flags, HeapMethods methodTable) :base(flags->CreationFlags, true) + private unsafe NativeHeap(UnmanagedHeapDescriptor* flags, HeapMethods methodTable) : base(flags->CreationFlags, true) { //Store heap pointer SetHandle(flags->HeapPointer); @@ -164,7 +164,7 @@ namespace VNLib.Utils.Memory delegate ERRNO DestroyHeapDelegate(IntPtr heap); [StructLayout(LayoutKind.Sequential)] - record struct UnmanagedHeapDescriptor + struct UnmanagedHeapDescriptor { public IntPtr HeapPointer; diff --git a/lib/Utils/src/VNLib.Utils.csproj b/lib/Utils/src/VNLib.Utils.csproj index 7941a7b..83d245c 100644 --- a/lib/Utils/src/VNLib.Utils.csproj +++ b/lib/Utils/src/VNLib.Utils.csproj @@ -2,16 +2,19 @@ <PropertyGroup> <TargetFramework>net8.0</TargetFramework> + <Nullable>enable</Nullable> <RootNamespace>VNLib.Utils</RootNamespace> <AssemblyName>VNLib.Utils</AssemblyName> <AllowUnsafeBlocks>true</AllowUnsafeBlocks> - <Nullable>enable</Nullable> <GenerateDocumentationFile>True</GenerateDocumentationFile> - <AnalysisLevel>latest-all</AnalysisLevel> <RunAnalyzersDuringBuild>false</RunAnalyzersDuringBuild> </PropertyGroup> <PropertyGroup> + <AnalysisLevel Condition="'$(BuildingInsideVisualStudio)' == true">latest-all</AnalysisLevel> + </PropertyGroup> + + <PropertyGroup> <PackageId>VNLib.Utils</PackageId> <Authors>Vaughn Nugent</Authors> <Company>Vaughn Nugent</Company> |