CWUploadTask.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. //
  2. // CWUploadTask.h
  3. // CWPlayer
  4. //
  5. // Created by hyjet on 2017/10/12.
  6. // Copyright © 2017年 CWPlayer. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. @class CWFileStreamSeparation;
  10. #ifdef __cplusplus
  11. #define TASK_EXTERN extern "C" __attribute__((visibility ("default")))
  12. #else
  13. #define TASK_EXTERN extern __attribute__((visibility ("default")))
  14. #endif
  15. /**
  16. 通知监听上传状态的key
  17. */
  18. TASK_EXTERN NSString * _Nonnull const CWUploadTaskExeing; //上传中
  19. TASK_EXTERN NSString * _Nonnull const CWUploadTaskExeError; //上传失败
  20. TASK_EXTERN NSString * _Nonnull const CWUploadTaskExeEnd; //上传完成
  21. TASK_EXTERN NSString * _Nonnull const CWUploadTaskExeSuspend; //上传暂停/取消
  22. typedef void(^finishHandler)(CWFileStreamSeparation * _Nullable fileStream, NSError * _Nullable error);
  23. typedef void(^success)(CWFileStreamSeparation * _Nullable fileStream);
  24. @interface CWUploadTask : NSObject
  25. @property (nonatomic,readonly,strong)CWFileStreamSeparation *_Nullable fileStream;
  26. //当前上传任务的URL
  27. @property (nonatomic,readonly,strong)NSURL * _Nullable url;
  28. //当前上传任务的参数
  29. @property (nonatomic,readonly,strong)NSMutableDictionary * _Nullable param;
  30. //任务对象的执行状态
  31. //@property (nonatomic,readonly,assign)NSURLSessionTaskState taskState;
  32. //上传任务的唯一ID
  33. @property (nonatomic,readonly,copy)NSString * _Nullable ID;
  34. //任务时间戳
  35. @property (nonatomic, assign) NSInteger timeStamp; //时间戳
  36. /**
  37. 根据一个文件分片模型创建一个上传任务,执行 taskResume 方法开始上传
  38. 使用 listenTaskExeCallback 方法传递block进行回调监听
  39. 同时也可以选择实现协议方法进行回调监听
  40. */
  41. + (instancetype _Nonnull )initWithStreamModel:(CWFileStreamSeparation * _Nonnull)fileStream;
  42. /**
  43. 监听一个已存在的上传任务的状态
  44. */
  45. - (void)listenTaskExeCallback:(finishHandler _Nonnull)block
  46. success:(success _Nonnull)successBlock;
  47. /**
  48. 根据一个文件分片模型的字典创建一个上传任务(处于等待状态)字典
  49. */
  50. + (NSMutableDictionary<NSString*,CWUploadTask*> *_Nullable)uploadTasksWithDict:(NSDictionary<NSString*,CWFileStreamSeparation*> *_Nullable)dict;
  51. /**
  52. 根据一个文件分片模型创建一个上传任务,执行 startExe 方法开始上传,结果会由block回调出来
  53. */
  54. - (instancetype _Nonnull)initWithStreamModel:(CWFileStreamSeparation *_Nonnull)fileStream
  55. finish:(finishHandler _Nonnull)block
  56. success:(success _Nonnull)successBlock;
  57. //继续/开始上传
  58. - (void)taskResume;
  59. //取消/暂停上传
  60. - (void)taskCancel;
  61. @end