-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathFlowOptions.cs
More file actions
40 lines (34 loc) · 1.38 KB
/
Copy pathFlowOptions.cs
File metadata and controls
40 lines (34 loc) · 1.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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; }
public FlowOptions(
TimeSpan? retentionPeriod = null,
bool? enableWatchdogs = null,
TimeSpan? messagesDefaultMaxWaitForCompletion = null,
int? maxParallelRetryInvocations = null
)
{
RetentionPeriod = retentionPeriod;
EnableWatchdogs = enableWatchdogs;
MessagesDefaultMaxWaitForCompletion = messagesDefaultMaxWaitForCompletion;
MaxParallelRetryInvocations = maxParallelRetryInvocations;
}
public FlowOptions Merge(Settings settings)
{
return new FlowOptions(
RetentionPeriod ?? settings.RetentionPeriod,
EnableWatchdogs ?? settings.EnableWatchdogs,
MessagesDefaultMaxWaitForCompletion ?? settings.MessagesDefaultMaxWaitForCompletion,
MaxParallelRetryInvocations ?? settings.MaxParallelRetryInvocations
);
}
internal LocalSettings MapToLocalSettings()
=> new(RetentionPeriod, EnableWatchdogs, MessagesDefaultMaxWaitForCompletion, MaxParallelRetryInvocations);
}