ContextualTtl
Defines a ttl strategy which will cache items for a TimeSpan which may be influenced by data in the execution context.
using System;
namespace Polly.Caching
{
public class ContextualTtl : ITtlStrategy
{
public static readonly string TimeSpanKey = "ContextualTtlTimeSpan";
public static readonly string SlidingExpirationKey = "ContextualTtlSliding";
private static readonly Ttl _noTtl = new Ttl(TimeSpan.Zero, false);
public Ttl GetTtl(Context context)
{
if (!context.ContainsKey(TimeSpanKey))
return _noTtl;
bool slidingExpiration = context.ContainsKey(SlidingExpirationKey) && ((context[SlidingExpirationKey] as bool?) ?? false);
return new Ttl((context[TimeSpanKey] as TimeSpan?) ?? TimeSpan.Zero, slidingExpiration);
}
}
}