19 lines
657 B
C#
19 lines
657 B
C#
using Kbx.Shared.Integrations.Generated;
|
|
|
|
namespace Kbx.Shared.Integrations;
|
|
|
|
public static class KbxDurableIntegrationRetryPlanner
|
|
{
|
|
public static DateTimeOffset? NextAttemptAt(
|
|
KbxIntegrationDefinition definition,
|
|
int durableAttempt,
|
|
DateTimeOffset now)
|
|
{
|
|
if (durableAttempt < 1) throw new ArgumentOutOfRangeException(nameof(durableAttempt));
|
|
if (durableAttempt > definition.LongRetryAttempts) return null;
|
|
var index = durableAttempt - 1;
|
|
if (index >= definition.LongRetryScheduleSeconds.Count) return null;
|
|
return now.AddSeconds(definition.LongRetryScheduleSeconds[index]);
|
|
}
|
|
}
|