diff --git a/src/c#/GeneralUpdate.Core/Pipeline/PipelineBuilder.cs b/src/c#/GeneralUpdate.Core/Pipeline/PipelineBuilder.cs index d75ef004..0dce594f 100644 --- a/src/c#/GeneralUpdate.Core/Pipeline/PipelineBuilder.cs +++ b/src/c#/GeneralUpdate.Core/Pipeline/PipelineBuilder.cs @@ -5,19 +5,19 @@ namespace GeneralUpdate.Core.Pipeline { /// - /// Pipeline builder. + /// Pipeline builder — middleware execute in FIFO (registration) order. /// public sealed class PipelineBuilder(PipelineContext context) { /// - /// LIFO£¬Last In First Out. + /// LIFO£¬Last In First Out. /// - private ImmutableStack _middlewareStack = ImmutableStack.Empty; + private ImmutableQueue _middlewareQueue = ImmutableQueue.Empty; public PipelineBuilder UseMiddleware() where TMiddleware : IMiddleware, new() { var middleware = new TMiddleware(); - _middlewareStack = _middlewareStack.Push(middleware); + _middlewareQueue = _middlewareQueue.Enqueue(middleware); return this; } @@ -28,13 +28,13 @@ public PipelineBuilder UseMiddlewareIf(bool? condition) return this; var middleware = new TMiddleware(); - _middlewareStack = _middlewareStack.Push(middleware); + _middlewareQueue = _middlewareQueue.Enqueue(middleware); return this; } public async Task Build() { - foreach (var middleware in _middlewareStack) + foreach (var middleware in _middlewareQueue) { await middleware.InvokeAsync(context); } diff --git a/src/c#/GeneralUpdate.Core/Strategy/LinuxStrategy.cs b/src/c#/GeneralUpdate.Core/Strategy/LinuxStrategy.cs index d1e2eab9..0fd5a75c 100644 --- a/src/c#/GeneralUpdate.Core/Strategy/LinuxStrategy.cs +++ b/src/c#/GeneralUpdate.Core/Strategy/LinuxStrategy.cs @@ -20,9 +20,9 @@ protected override PipelineBuilder BuildPipeline(PipelineContext context) { GeneralTracer.Info($"GeneralUpdate.Core.LinuxStrategy.BuildPipeline: assembling middleware pipeline. PatchEnabled={_configinfo.PatchEnabled}"); var builder = new PipelineBuilder(context) - .UseMiddlewareIf(_configinfo.PatchEnabled) + .UseMiddleware() .UseMiddleware() - .UseMiddleware(); + .UseMiddlewareIf(_configinfo.PatchEnabled); return builder; } diff --git a/src/c#/GeneralUpdate.Core/Strategy/MacStrategy.cs b/src/c#/GeneralUpdate.Core/Strategy/MacStrategy.cs index d7d96dda..d4ed3e91 100644 --- a/src/c#/GeneralUpdate.Core/Strategy/MacStrategy.cs +++ b/src/c#/GeneralUpdate.Core/Strategy/MacStrategy.cs @@ -52,9 +52,9 @@ protected override PipelineBuilder BuildPipeline(PipelineContext context) { GeneralTracer.Info($"MacStrategy.BuildPipeline: assembling middleware pipeline. PatchEnabled={_configinfo.PatchEnabled}"); var builder = new PipelineBuilder(context) - .UseMiddlewareIf(_configinfo.PatchEnabled) + .UseMiddleware() .UseMiddleware() - .UseMiddleware(); + .UseMiddlewareIf(_configinfo.PatchEnabled); return builder; } } diff --git a/src/c#/GeneralUpdate.Core/Strategy/WindowsStrategy.cs b/src/c#/GeneralUpdate.Core/Strategy/WindowsStrategy.cs index 8612ed3a..bf7e7811 100644 --- a/src/c#/GeneralUpdate.Core/Strategy/WindowsStrategy.cs +++ b/src/c#/GeneralUpdate.Core/Strategy/WindowsStrategy.cs @@ -27,9 +27,9 @@ protected override PipelineBuilder BuildPipeline(PipelineContext context) { GeneralTracer.Info($"GeneralUpdate.Core.WindowsStrategy.BuildPipeline: assembling middleware pipeline. PatchEnabled={_configinfo.PatchEnabled}"); var builder = new PipelineBuilder(context) - .UseMiddlewareIf(_configinfo.PatchEnabled) + .UseMiddleware() .UseMiddleware() - .UseMiddleware(); + .UseMiddlewareIf(_configinfo.PatchEnabled); return builder; }