You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
2.8 KiB
81 lines
2.8 KiB
/* |
|
* This file is part of the SDWebImage package. |
|
* (c) Olivier Poitrey <rs@dailymotion.com> |
|
* |
|
* For the full copyright and license information, please view the LICENSE |
|
* file that was distributed with this source code. |
|
*/ |
|
|
|
#import <Foundation/Foundation.h> |
|
#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 <SDImageCache> |
|
|
|
/** |
|
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<id<SDImageCache>> *caches; |
|
|
|
/** |
|
Add a new cache to the end of caches array. Which has the highest priority. |
|
|
|
@param cache cache |
|
*/ |
|
- (void)addCache:(nonnull id<SDImageCache>)cache; |
|
|
|
/** |
|
Remove a cache in the caches array. |
|
|
|
@param cache cache |
|
*/ |
|
- (void)removeCache:(nonnull id<SDImageCache>)cache; |
|
|
|
@end
|
|
|