public void Initialize() { _clock = MockSystemClock.Get(); _clock.SetDateTime(DateTime.Now); NoOpDiskTrimmableRegistry.Instance.ResetCounter(); _diskTrimmableRegistry = NoOpDiskTrimmableRegistry.Instance; _cacheEventListener = new DuplicatingCacheEventListener(); // We know the directory will be this _cacheDirectory = new DirectoryInfo( Path.Combine(ApplicationData.Current.LocalCacheFolder.Path, CACHE_TYPE)); _cacheDirectory.Create(); if (!_cacheDirectory.Exists) { throw new Exception( string.Format( "Cannot create cache dir: {0}: directory {1}", ApplicationData.Current.LocalCacheFolder.Path, _cacheDirectory.Exists ? "already exists" : "does not exist")); } _storage = CreateDiskStorage(TESTCACHE_VERSION_START_OF_VERSIONING); _cache = CreateDiskCache(_storage, false); Assert.IsTrue(((NoOpDiskTrimmableRegistry)_diskTrimmableRegistry).RegisterDiskTrimmableCount == 1); }
internal DiskCacheConfig(Builder builder) { _version = builder._version; _baseDirectoryName = Preconditions.CheckNotNull(builder._baseDirectoryName); _baseDirectoryPathSupplier = Preconditions.CheckNotNull(builder._baseDirectoryPathSupplier); _defaultSizeLimit = builder._maxCacheSize; _lowDiskSpaceSizeLimit = builder._maxCacheSizeOnLowDiskSpace; _minimumSizeLimit = builder._maxCacheSizeOnVeryLowDiskSpace; _entryEvictionComparatorSupplier = Preconditions.CheckNotNull(builder._entryEvictionComparatorSupplier); _cacheErrorLogger = builder._cacheErrorLogger ?? NoOpCacheErrorLogger.Instance; _cacheEventListener = builder._cacheEventListener ?? NoOpCacheEventListener.Instance; _diskTrimmableRegistry = builder._diskTrimmableRegistry ?? NoOpDiskTrimmableRegistry.Instance; _indexPopulateAtStartupEnabled = builder._indexPopulateAtStartupEnabled; }
/// <summary> /// The class that will contain a registry of caches to be trimmed in /// low disk space conditions. /// /// <para />See <see cref="IDiskTrimmableRegistry"/>. /// </summary> public Builder SetDiskTrimmableRegistry(IDiskTrimmableRegistry diskTrimmableRegistry) { _diskTrimmableRegistry = diskTrimmableRegistry; return(this); }
/// <summary> /// Instantiates the <see cref="DiskStorageCache"/>. /// </summary> public DiskStorageCache( IDiskStorage diskStorage, IEntryEvictionComparatorSupplier entryEvictionComparatorSupplier, Params parameters, ICacheEventListener cacheEventListener, ICacheErrorLogger cacheErrorLogger, IDiskTrimmableRegistry diskTrimmableRegistry, bool indexPopulateAtStartupEnabled, Clock clock = null) { _lowDiskSpaceCacheSizeLimit = parameters.LowDiskSpaceCacheSizeLimit; _defaultCacheSizeLimit = parameters.DefaultCacheSizeLimit; _cacheSizeLimit = parameters.DefaultCacheSizeLimit; _statFsHelper = StatFsHelper.Instance; _storage = diskStorage; _entryEvictionComparatorSupplier = entryEvictionComparatorSupplier; _cacheSizeLastUpdateTime = default(DateTime); _cacheEventListener = cacheEventListener; _cacheSizeLimitMinimum = parameters.CacheSizeLimitMinimum; _cacheErrorLogger = cacheErrorLogger; _cacheStats = new CacheStats(); if (diskTrimmableRegistry != null) { diskTrimmableRegistry.RegisterDiskTrimmable(this); } _clock = clock ?? SystemClock.Get(); _indexPopulateAtStartupEnabled = indexPopulateAtStartupEnabled; _resourceIndex = new HashSet <string>(); if (_indexPopulateAtStartupEnabled) { Task.Run(() => { try { lock (_lock) { MaybeUpdateFileCacheSize(); } } finally { _countdownEvent.Signal(); } }); } else { _countdownEvent.Reset(0); } }