Skip to content

Commit d2496f1

Browse files
authored
Merge pull request #438 from JusterZhu/refactor/pipeline-fifo
refactor: PipelineBuilder LIFO to FIFO for intuitive middleware ordering
2 parents 2e85a73 + d3dcd74 commit d2496f1

4 files changed

Lines changed: 12 additions & 12 deletions

File tree

src/c#/GeneralUpdate.Core/Pipeline/PipelineBuilder.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,19 @@
55
namespace GeneralUpdate.Core.Pipeline
66
{
77
/// <summary>
8-
/// Pipeline builder.
8+
/// Pipeline builder — middleware execute in FIFO (registration) order.
99
/// </summary>
1010
public sealed class PipelineBuilder(PipelineContext context)
1111
{
1212
/// <summary>
13-
/// LIFO£¬Last In First Out.
13+
/// LIFO£¬Last In First Out.
1414
/// </summary>
15-
private ImmutableStack<IMiddleware> _middlewareStack = ImmutableStack<IMiddleware>.Empty;
15+
private ImmutableQueue<IMiddleware> _middlewareQueue = ImmutableQueue<IMiddleware>.Empty;
1616

1717
public PipelineBuilder UseMiddleware<TMiddleware>() where TMiddleware : IMiddleware, new()
1818
{
1919
var middleware = new TMiddleware();
20-
_middlewareStack = _middlewareStack.Push(middleware);
20+
_middlewareQueue = _middlewareQueue.Enqueue(middleware);
2121
return this;
2222
}
2323

@@ -28,13 +28,13 @@ public PipelineBuilder UseMiddlewareIf<TMiddleware>(bool? condition)
2828
return this;
2929

3030
var middleware = new TMiddleware();
31-
_middlewareStack = _middlewareStack.Push(middleware);
31+
_middlewareQueue = _middlewareQueue.Enqueue(middleware);
3232
return this;
3333
}
3434

3535
public async Task Build()
3636
{
37-
foreach (var middleware in _middlewareStack)
37+
foreach (var middleware in _middlewareQueue)
3838
{
3939
await middleware.InvokeAsync(context);
4040
}

src/c#/GeneralUpdate.Core/Strategy/LinuxStrategy.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ protected override PipelineBuilder BuildPipeline(PipelineContext context)
2020
{
2121
GeneralTracer.Info($"GeneralUpdate.Core.LinuxStrategy.BuildPipeline: assembling middleware pipeline. PatchEnabled={_configinfo.PatchEnabled}");
2222
var builder = new PipelineBuilder(context)
23-
.UseMiddlewareIf<PatchMiddleware>(_configinfo.PatchEnabled)
23+
.UseMiddleware<HashMiddleware>()
2424
.UseMiddleware<CompressMiddleware>()
25-
.UseMiddleware<HashMiddleware>();
25+
.UseMiddlewareIf<PatchMiddleware>(_configinfo.PatchEnabled);
2626
return builder;
2727
}
2828

src/c#/GeneralUpdate.Core/Strategy/MacStrategy.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,9 @@ protected override PipelineBuilder BuildPipeline(PipelineContext context)
5252
{
5353
GeneralTracer.Info($"MacStrategy.BuildPipeline: assembling middleware pipeline. PatchEnabled={_configinfo.PatchEnabled}");
5454
var builder = new PipelineBuilder(context)
55-
.UseMiddlewareIf<PatchMiddleware>(_configinfo.PatchEnabled)
55+
.UseMiddleware<HashMiddleware>()
5656
.UseMiddleware<CompressMiddleware>()
57-
.UseMiddleware<HashMiddleware>();
57+
.UseMiddlewareIf<PatchMiddleware>(_configinfo.PatchEnabled);
5858
return builder;
5959
}
6060
}

src/c#/GeneralUpdate.Core/Strategy/WindowsStrategy.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@ protected override PipelineBuilder BuildPipeline(PipelineContext context)
2727
{
2828
GeneralTracer.Info($"GeneralUpdate.Core.WindowsStrategy.BuildPipeline: assembling middleware pipeline. PatchEnabled={_configinfo.PatchEnabled}");
2929
var builder = new PipelineBuilder(context)
30-
.UseMiddlewareIf<PatchMiddleware>(_configinfo.PatchEnabled)
30+
.UseMiddleware<HashMiddleware>()
3131
.UseMiddleware<CompressMiddleware>()
32-
.UseMiddleware<HashMiddleware>();
32+
.UseMiddlewareIf<PatchMiddleware>(_configinfo.PatchEnabled);
3333
return builder;
3434
}
3535

0 commit comments

Comments
 (0)