/* * This file is part of the SDWebImage package. * (c) Olivier Poitrey * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ #import #import "SDImageCacheDefine.h" /// Policy for cache operation typedef NS_ENUM(NSUInteger, SDImageCachesManagerOperationPolicy) { SDImageCachesManagerOperationPolicySerial, // process all caches serially (from the highest priority to the lowest priority cache by order) SDImageCachesManagerOperationPolicyConcurrent, // process all caches concurrently SDImageCachesManagerOperationPolicyHighestOnly, // process the highest priority cache only SDImageCachesManagerOperationPolicyLowestOnly // process the lowest priority cache only }; /** A caches manager to manage multiple caches. */ @interface SDImageCachesManager : NSObject /** Returns the global shared caches manager instance. By default we will set [`SDImageCache.sharedImageCache`] into the caches array. */ @property (nonatomic, class, readonly, nonnull) SDImageCachesManager *sharedManager; // These are op policy for cache manager. /** Operation policy for query op. Defaults to `Serial`, means query all caches serially (one completion called then next begin) until one cache query success (`image` != nil). */ @property (nonatomic, assign) SDImageCachesManagerOperationPolicy queryOperationPolicy; /** Operation policy for store op. Defaults to `HighestOnly`, means store to the highest priority cache only. */ @property (nonatomic, assign) SDImageCachesManagerOperationPolicy storeOperationPolicy; /** Operation policy for remove op. Defaults to `Concurrent`, means remove all caches concurrently. */ @property (nonatomic, assign) SDImageCachesManagerOperationPolicy removeOperationPolicy; /** Operation policy for contains op. Defaults to `Serial`, means check all caches serially (one completion called then next begin) until one cache check success (`containsCacheType` != None). */ @property (nonatomic, assign) SDImageCachesManagerOperationPolicy containsOperationPolicy; /** Operation policy for clear op. Defaults to `Concurrent`, means clear all caches concurrently. */ @property (nonatomic, assign) SDImageCachesManagerOperationPolicy clearOperationPolicy; /** All caches in caches manager. The caches array is a priority queue, which means the later added cache will have the highest priority */ @property (nonatomic, copy, nullable) NSArray> *caches; /** Add a new cache to the end of caches array. Which has the highest priority. @param cache cache */ - (void)addCache:(nonnull id)cache; /** Remove a cache in the caches array. @param cache cache */ - (void)removeCache:(nonnull id)cache; @end