Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 0 additions & 68 deletions Cleipnir.Flows.Tests/Flows/FlowsWithMiddlewareTests.cs

This file was deleted.

50 changes: 0 additions & 50 deletions Cleipnir.Flows/CrossCutting/CallChain.cs

This file was deleted.

19 changes: 0 additions & 19 deletions Cleipnir.Flows/CrossCutting/IMiddleware.cs

This file was deleted.

8 changes: 0 additions & 8 deletions Cleipnir.Flows/CrossCutting/MiddlewareInstanceOrType.cs

This file was deleted.

35 changes: 5 additions & 30 deletions Cleipnir.Flows/FlowOptions.cs
Original file line number Diff line number Diff line change
@@ -1,25 +1,21 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Cleipnir.Flows.CrossCutting;
using System;
using Cleipnir.ResilientFunctions.Domain;

namespace Cleipnir.Flows;

public class FlowOptions
{
public static FlowOptions Default { get; } = new();

internal TimeSpan? RetentionPeriod { get; }
internal bool? EnableWatchdogs { get; }
internal int? MaxParallelRetryInvocations { get; }
internal TimeSpan? MessagesDefaultMaxWaitForCompletion { get; }
internal List<MiddlewareInstanceOrType> Middlewares { get; } = new();

public FlowOptions(
TimeSpan? retentionPeriod = null,
bool? enableWatchdogs = null,
TimeSpan? messagesDefaultMaxWaitForCompletion = null,
TimeSpan? messagesDefaultMaxWaitForCompletion = null,
int? maxParallelRetryInvocations = null
)
{
Expand All @@ -29,37 +25,16 @@ public FlowOptions(
MaxParallelRetryInvocations = maxParallelRetryInvocations;
}

public FlowOptions UseMiddleware<TMiddleware>() where TMiddleware : IMiddleware
{
Middlewares.Add(new MiddlewareType(typeof(TMiddleware)));
return this;
}

public FlowOptions UseMiddleware(IMiddleware middleware)
{
Middlewares.Add(new MiddlewareInstance(middleware));
return this;
}

public FlowOptions Merge(Options options)
{
var merged = new FlowOptions(
return new FlowOptions(
RetentionPeriod ?? options.RetentionPeriod,
EnableWatchdogs ?? options.EnableWatchdogs,
MessagesDefaultMaxWaitForCompletion ?? options.MessagesDefaultMaxWaitForCompletion,
MaxParallelRetryInvocations ?? options.MaxParallelRetryInvocations
);

if (Middlewares.Any())
foreach (var middleware in Middlewares)
merged.Middlewares.Add(middleware);
else
foreach (var middleware in options.Middlewares)
merged.Middlewares.Add(middleware);

return merged;
}

internal LocalSettings MapToLocalSettings()
=> new(RetentionPeriod, EnableWatchdogs, MessagesDefaultMaxWaitForCompletion, MaxParallelRetryInvocations);
}
}
Loading