/// <summary> /// /// </summary> /// <param name="fullTypeName"></param> /// <param name="evictionType"></param> /// <param name="limit"></param> /// <param name="itemsToRemove"></param> public void ConfigEviction(string fullTypeName, EvictionType evictionType, int limit, int itemsToRemove) { var request = new EvictionSetupRequest(fullTypeName, evictionType, limit, itemsToRemove); var response = Channel.SendRequest(request); if (response is ExceptionResponse exResponse) { throw new CacheException("Error while declaring a domain", exResponse.Message, exResponse.CallStack); } }
private void EvictionSetup(EvictionSetupRequest evictionSetup, IClient client) { if (_dataStore.DomainDescription != null && !_dataStore.DomainDescription.IsEmpty) { throw new NotSupportedException( "Can not activate eviction on a type with a domain declaration"); } _dataStore.EvictionPolicy = evictionSetup.Type == EvictionType.LessRecentlyUsed ? new LruEvictionPolicy(evictionSetup.Limit, evictionSetup.ItemsToEvict) : evictionSetup.Type == EvictionType.TimeToLive ? new TtlEvictionPolicy( TimeSpan.FromMilliseconds(evictionSetup.TimeToLiveInMilliseconds)) : (EvictionPolicy) new NullEvictionPolicy(); client.SendResponse(new NullResponse()); }
/// <summary> /// </summary> /// <param name="fullTypeName"></param> /// <param name="evictionType"></param> /// <param name="limit"></param> /// <param name="itemsToRemove"></param> /// <param name="timeLimitInMilliseconds"></param> public void ConfigEviction(string fullTypeName, EvictionType evictionType, int limit, int itemsToRemove, int timeLimitInMilliseconds = 0) { if (evictionType == EvictionType.LessRecentlyUsed && timeLimitInMilliseconds != 0) { throw new ArgumentException($"{nameof(timeLimitInMilliseconds)} can be used only for TTL eviction"); } if (evictionType == EvictionType.TimeToLive && (limit != 0 || itemsToRemove != 0)) { throw new ArgumentException($"{nameof(limit)} and {nameof(itemsToRemove)} can be used only for LRU eviction"); } var request = new EvictionSetupRequest(fullTypeName, evictionType, limit, itemsToRemove, timeLimitInMilliseconds); var response = Channel.SendRequest(request); if (response is ExceptionResponse exResponse) { throw new CacheException("Error while declaring a domain", exResponse.Message, exResponse.CallStack); } }