// // RQDownloadModel.h // TEST // // Created by 张嵘 on 2018/10/22. // Copyright © 2018 张嵘. All rights reserved. // #import @class RQDownloadOperation; @class RQDownloadModel; //下载状态 typedef NS_ENUM(NSUInteger, RQDownloadStatus) { RQDownloadStatus_None = 0, // 无状态 RQDownloadStatus_Running = 1, // 正在下载 RQDownloadStatus_Suspended = 2, // 下载暂停 RQDownloadStatus_Completed = 3, // 下载完成 RQDownloadStatus_Failed = 4, // 下载失败 RQDownloadStatus_Waiting = 5, // 等待下载 RQDownloadStatus_Cancel = 6, // 取消下载 }; //下载状态改变回调 typedef void(^DownloadStatusChanged)(RQDownloadModel *downloadModel); //下载进度回调 typedef void(^DownloadProgressChanged)(RQDownloadModel *downloadModel); @interface RQDownloadModel : NSObject @property (nonatomic, copy) NSString *videoId; // 视频ID @property (nonatomic, copy) NSString *subject; // 视频类型 @property (nonatomic, copy) NSString *vid; // 唯一id标识 @property (nonatomic, copy) NSString *urlString; // url @property (nonatomic, copy) NSString *title; // 标题 @property (nonatomic, copy) NSString *imageUrl; // 图片 @property (nonatomic, copy) NSString *content; // 内容 @property (nonatomic, copy) NSString *destinationPath; // 下载完成路径 @property (nonatomic, copy) NSString *fileName; // 文件名 @property (nonatomic, copy) NSString *fileFormat; // 文件路径 @property (nonatomic, strong) NSData *resumeData; // 下载的数据 @property (nonatomic, assign) CGFloat progress; // 下载进度 @property (nonatomic, assign) NSUInteger fileTotalSize; // 文件总大小 @property (nonatomic, assign) NSUInteger fileDownloadSize; // 下载大小 @property (nonatomic, assign) NSUInteger speed; // 下载速度 @property (nonatomic, assign) RQDownloadStatus status; // 下载状态 @property (nonatomic, copy) NSString *statusText; // 下载状态文字 @property (nonatomic, assign) NSUInteger lastSpeedTime; // 上次计算速度时的时间戳 @property (nonatomic, assign) NSUInteger intervalFileSize; // 计算速度时间内下载文件的大小 @property (nonatomic, assign) NSUInteger lastStateTime; // 记录任务加入准备下载的时间(点击默认、暂停、失败状态),用于计算开始、停止任务的先后顺序 @property (nonatomic, strong) RQDownloadOperation * operation; // 下载操作 @property (nonatomic, copy) DownloadStatusChanged statusChanged; // 状态改变回调 @property (nonatomic, copy) DownloadProgressChanged progressChanged; // 进度改变回调 @property (nonatomic, assign) BOOL isLast; // 数组最后一个模型 @property (nonatomic, strong) NSOutputStream *stream; // 输出流 @property (nonatomic, assign) BOOL isFinished; // 下载完成 @property (nonatomic, strong) RACSignal *progressChangedSignal; // 根据数据库查询结果初始化 - (instancetype)initWithFMResultSet:(FMResultSet *)resultSet; @end