BBADownloaderManager.h 2.94 KB
//
//  BBADownloaderManager.h
//  ApsManager
//
//  Created by ZhangYonglu on 2018/10/22.
//  Copyright © 2018年 Baidu. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "BBADownloaderItem.h"
#import "BBADownloaderRequestItem.h"
#import "BBADownloaderCommon.h"

NS_ASSUME_NONNULL_BEGIN

@interface BBADownloaderManager : NSObject

+ (instancetype)sharedInstance;

/**
 * @brief 添加下载任务
 *
 * @param requestItem 请求参数:用用详细请求配置
 * @param statusChangedHandler 状态变更回调
 * @param progressChangedHandler 进度变更回调
 * @return 下载任务的唯一标识,用于后续暂停、恢复、取消等操作。
 */
- (NSString *)startTaskWithRequestItem:(BBADownloaderRequestItem *)requestItem
                  statusChangedHandler:(BBADownloaderStatusChangedHandler)statusChangedHandler
                progressChangedHandler:(BBADownloaderProgressChangedHandler)progressChangedHandler;

/**
 * @brief 暂停uniqueId对应的下载任务
 *
 * @param uniqueId 下载资源的唯一标识
 */
- (void)suspendTaskWithUniqueId:(NSString *)uniqueId;

/**
 * @brief 恢复sourceURL对应的下载任务
 *
 * @param uniqueId 下载资源的唯一标识
 */
- (void)resumeTaskWithUniqueId:(NSString *)uniqueId;

/**
 * @brief 取消uniqueId对应的下载任务
 *
 * @param uniqueId 下载资源的唯一标识
 */
- (void)cancelTaskWithUniqueId:(NSString *)uniqueId;

/**
 * @brief 暂停uniqueId对应的下载任务
 *
 * @param uniqueIds 下载资源的唯一标识数组
 */
- (void)suspendTaskWithUniqueIdArray:(NSArray<NSString *> *)uniqueIds;
    
/**
 * @brief 恢复sourceURL对应的下载任务
 *
 * @param uniqueIds 下载资源的唯一标识数组
 */
- (void)resumeTaskWithUniqueIdArray:(NSArray<NSString *> *)uniqueIds;
    
/**
 * @brief 取消uniqueId对应的下载任务
 *
 * @param uniqueIds 下载资源的唯一标识数组
 */
- (void)cancelTaskWithUniqueIdArray:(NSArray<NSString *> *)uniqueIds;
    
/**
 * @brief 取消所有的下载任务
 *
 */
- (void)cancelAllTasks;

/**
 * @brief 暂停所有的下载任务
 *
 */
- (void)suspendAllTasks;

/**
 * @brief 恢复所有的下载任务
 *
 */
- (void)resumeAllTasks;

/**
 * @brief 获取当前requstItem对应的'已下载字节数'
 *
 * @param requestItem 下载请求参数
 * @return 已下载字节数
 */
- (int64_t)totalReceivedBytes:(BBADownloaderRequestItem *)requestItem;

/**
 * @brief 将item对应的task的优先级 更改为 priority
 *
 * @param taskUniqueId 下载资源信息的唯一标识
 * @param priority 优先级
 * @param completion 完成回调,注意回调中的result不代表调整结果,而是代表是否找到了要调整的任务:YES表示找到了item对应的下载任务task。如果没有找到,则为NO
 */
- (void)changePriorityOfTask:(NSString *)taskUniqueId
                  toPriority:(EBBADownloaderPriority)priority
                  completion:(void(^)(BOOL result))completion ;

@end

NS_ASSUME_NONNULL_END