/// <summary> /// /// </summary> /// <param name="ticks"></param> /// <param name="isSliding"></param> /// <returns></returns> /// public static ExpirationHint MakeExpirationHint(PoolManager poolManger, long ticks, bool isAbsolute) { if (ticks == 0) { return(null); } IdleExpiration idleExpiration = null; if (!isAbsolute) { TimeSpan slidingExpiration = new TimeSpan(ticks); if (slidingExpiration.CompareTo(TimeSpan.Zero) < 0) { throw new ArgumentOutOfRangeException("slidingExpiration"); } if (slidingExpiration.CompareTo(DateTime.Now.AddYears(1) - DateTime.Now) >= 0) { throw new ArgumentOutOfRangeException("slidingExpiration"); } idleExpiration = IdleExpiration.Create(poolManger, slidingExpiration); return(idleExpiration); } else { DateTime absoluteExpiration = new DateTime(ticks, DateTimeKind.Utc); return(FixedExpiration.Create(poolManger, absoluteExpiration)); } }
public static ExpirationHint GetExpirationHintObj(PoolManager poolManager, Alachisoft.NCache.Common.Protobuf.Dependency dependency, long absoluteExpiration, long slidingExpiration, bool resyncOnExpiration, string serializationContext) { ExpirationHint hint = null; //We expect Web.Cache to send in UTC DateTime, AbsoluteExpiration is dealt in UTC if (absoluteExpiration != Common.Util.Time.MaxUniversalTicks && absoluteExpiration != 0 && absoluteExpiration != 1 && absoluteExpiration != 2) { hint = FixedExpiration.Create(poolManager, new DateTime(absoluteExpiration, DateTimeKind.Utc)); } if (slidingExpiration != 0 && slidingExpiration != 1 && slidingExpiration != 2) { hint = IdleExpiration.Create(poolManager, new TimeSpan(slidingExpiration)); } ExpirationHint depHint = GetExpirationHintObj(poolManager, dependency, false, serializationContext); if (depHint != null) { if (hint != null) { if (depHint is AggregateExpirationHint) { ((AggregateExpirationHint)depHint).Add(hint); hint = depHint; } else { hint = AggregateExpirationHint.Create(poolManager, hint, depHint); } } else { hint = depHint; } } if (hint != null && resyncOnExpiration) { hint.SetBit(ExpirationHint.NEEDS_RESYNC); } return(hint); }