RQDownloadModel.h 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. //
  2. // RQDownloadModel.h
  3. // TEST
  4. //
  5. // Created by 张嵘 on 2018/10/22.
  6. // Copyright © 2018 张嵘. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. @class RQDownloadOperation;
  10. @class RQDownloadModel;
  11. //下载状态
  12. typedef NS_ENUM(NSUInteger, RQDownloadStatus) {
  13. RQDownloadStatus_None = 0, // 无状态
  14. RQDownloadStatus_Running = 1, // 正在下载
  15. RQDownloadStatus_Suspended = 2, // 下载暂停
  16. RQDownloadStatus_Completed = 3, // 下载完成
  17. RQDownloadStatus_Failed = 4, // 下载失败
  18. RQDownloadStatus_Waiting = 5, // 等待下载
  19. RQDownloadStatus_Cancel = 6, // 取消下载
  20. };
  21. //下载状态改变回调
  22. typedef void(^DownloadStatusChanged)(RQDownloadModel *downloadModel);
  23. //下载进度回调
  24. typedef void(^DownloadProgressChanged)(RQDownloadModel *downloadModel);
  25. @interface RQDownloadModel : NSObject
  26. @property (nonatomic, copy) NSString *videoId; // 视频ID
  27. @property (nonatomic, copy) NSString *subject; // 视频类型
  28. @property (nonatomic, copy) NSString *vid; // 唯一id标识
  29. @property (nonatomic, copy) NSString *urlString; // url
  30. @property (nonatomic, copy) NSString *title; // 标题
  31. @property (nonatomic, copy) NSString *imageUrl; // 图片
  32. @property (nonatomic, copy) NSString *content; // 内容
  33. @property (nonatomic, copy) NSString *destinationPath; // 下载完成路径
  34. @property (nonatomic, copy) NSString *fileName; // 文件名
  35. @property (nonatomic, copy) NSString *fileFormat; // 文件路径
  36. @property (nonatomic, strong) NSData *resumeData; // 下载的数据
  37. @property (nonatomic, assign) CGFloat progress; // 下载进度
  38. @property (nonatomic, assign) NSUInteger fileTotalSize; // 文件总大小
  39. @property (nonatomic, assign) NSUInteger fileDownloadSize; // 下载大小
  40. @property (nonatomic, assign) NSUInteger speed; // 下载速度
  41. @property (nonatomic, assign) RQDownloadStatus status; // 下载状态
  42. @property (nonatomic, copy) NSString *statusText; // 下载状态文字
  43. @property (nonatomic, assign) NSUInteger lastSpeedTime; // 上次计算速度时的时间戳
  44. @property (nonatomic, assign) NSUInteger intervalFileSize; // 计算速度时间内下载文件的大小
  45. @property (nonatomic, assign) NSUInteger lastStateTime; // 记录任务加入准备下载的时间(点击默认、暂停、失败状态),用于计算开始、停止任务的先后顺序
  46. @property (nonatomic, strong) RQDownloadOperation * operation; // 下载操作
  47. @property (nonatomic, copy) DownloadStatusChanged statusChanged; // 状态改变回调
  48. @property (nonatomic, copy) DownloadProgressChanged progressChanged; // 进度改变回调
  49. @property (nonatomic, assign) BOOL isLast; // 数组最后一个模型
  50. @property (nonatomic, strong) NSOutputStream *stream; // 输出流
  51. @property (nonatomic, assign) BOOL isFinished; // 下载完成
  52. @property (nonatomic, strong) RACSignal *progressChangedSignal;
  53. // 根据数据库查询结果初始化
  54. - (instancetype)initWithFMResultSet:(FMResultSet *)resultSet;
  55. @end