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;
}