12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- //
- // QNUploadServerFreezeManager.m
- // QiniuSDK
- //
- // Created by yangsen on 2020/6/2.
- // Copyright © 2020 Qiniu. All rights reserved.
- //
- #import "QNConfiguration.h"
- #import "QNUploadServerFreezeManager.h"
- @interface QNUploadServerFreezeItem : NSObject
- @property(nonatomic, copy)NSString *type;
- @property(nonatomic, strong)NSDate *freezeDate;
- @end
- @implementation QNUploadServerFreezeItem
- + (instancetype)item:(NSString *)type{
- QNUploadServerFreezeItem *item = [[QNUploadServerFreezeItem alloc] init];
- item.type = type;
- return item;
- }
- - (BOOL)isFrozenByDate:(NSDate *)date{
- BOOL isFrozen = YES;
- @synchronized (self) {
- if (!self.freezeDate || [self.freezeDate timeIntervalSinceDate:date] < 0){
- isFrozen = NO;
- }
- }
- return isFrozen;
- }
- - (void)freeze:(NSInteger)frozenTime{
- @synchronized (self) {
- self.freezeDate = [NSDate dateWithTimeIntervalSinceNow:frozenTime];
- }
- }
- @end
- @interface QNUploadServerFreezeManager()
- @property(nonatomic, strong)NSMutableDictionary *freezeInfo;
- @end
- @implementation QNUploadServerFreezeManager
- - (instancetype)init{
- if (self = [super init]) {
- _freezeInfo = [NSMutableDictionary dictionary];
- }
- return self;
- }
- - (BOOL)isTypeFrozen:(NSString * _Nullable)type {
- if (!type || type.length == 0) {
- return true;
- }
-
- BOOL isFrozen = true;
- QNUploadServerFreezeItem *item = nil;
- @synchronized (self) {
- item = self.freezeInfo[type];
- }
-
- if (!item || ![item isFrozenByDate:[NSDate date]]) {
- isFrozen = false;
- }
-
- return isFrozen;
- }
- - (void)freezeType:(NSString * _Nullable)type frozenTime:(NSInteger)frozenTime {
- if (!type || type.length == 0) {
- return;
- }
-
- QNUploadServerFreezeItem *item = nil;
- @synchronized (self) {
- item = self.freezeInfo[type];
- if (!item) {
- item = [QNUploadServerFreezeItem item:type];
- self.freezeInfo[type] = item;
- }
- }
-
- [item freeze:frozenTime];
- }
- - (void)unfreezeType:(NSString * _Nullable)type {
- if (!type || type.length == 0) {
- return;
- }
-
- @synchronized (self) {
- [self.freezeInfo removeObjectForKey:type];
- }
- }
- @end
|