NonSlidingTtl
Represents an ITtlStrategy expiring at an absolute time, not with sliding expiration.
using Polly.Utilities;
using System;
namespace Polly.Caching
{
public abstract class NonSlidingTtl : ITtlStrategy, ITtlStrategy<object>
{
protected readonly DateTimeOffset absoluteExpirationTime;
protected NonSlidingTtl(DateTimeOffset absoluteExpirationTime)
{
this.absoluteExpirationTime = absoluteExpirationTime;
}
public Ttl GetTtl(Context context, object result)
{
TimeSpan timeSpan = absoluteExpirationTime.Subtract(SystemClock.DateTimeOffsetUtcNow());
return new Ttl((timeSpan > TimeSpan.Zero) ? timeSpan : TimeSpan.Zero, false);
}
}
}