QNUploadSource.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. //
  2. // QNUploadSource.h
  3. // QiniuSDK
  4. //
  5. // Created by yangsen on 2021/5/10.
  6. // Copyright © 2021 Qiniu. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. NS_ASSUME_NONNULL_BEGIN
  10. @protocol QNUploadSource <NSObject>
  11. /**
  12. * 获取资源唯一标识
  13. * 作为断点续传时判断是否为同一资源的依据之一;
  14. * 如果两个资源的 record key 和 资源唯一标识均相同则认为资源为同一资源,断点续传才会生效
  15. * 注:
  16. * 同一资源的数据必须完全相同,否则上传可能会出现异常
  17. *
  18. * @return 资源修改时间
  19. */
  20. - (NSString *)getId;
  21. /**
  22. * 是否可以重新加载文件信息,也即是否可以重新读取信息
  23. * @return return
  24. */
  25. - (BOOL)couldReloadSource;
  26. /**
  27. * 重新加载文件信息,以便于重新读取
  28. *
  29. * @return 重新加载是否成功
  30. */
  31. - (BOOL)reloadSource;
  32. /**
  33. * 获取资源文件名
  34. * @return 资源文件名
  35. */
  36. - (NSString *)getFileName;
  37. /**
  38. * 获取资源大小
  39. * 无法获取大小时返回 -1
  40. * 作用:
  41. * 1. 验证资源是否为同一资源
  42. * 2. 计算上传进度
  43. *
  44. * @return 资源大小
  45. */
  46. - (long long)getSize;
  47. /**
  48. * 读取数据
  49. * 1. 返回 NSData 可能为空,但不会为 null;
  50. * 2. 当 NSData 大小和 dataSize 不同时,则源数据已经读取结束
  51. * 3. 读取异常时抛出 error
  52. * 4. 仅支持串行调用,且 dataOffset 依次递增
  53. *
  54. * @param dataSize 数据大小
  55. * @param dataOffset 数据偏移量
  56. * @param error 异常时的错误信息
  57. * @return 数据
  58. */
  59. - (NSData *)readData:(NSInteger)dataSize dataOffset:(long long)dataOffset error:(NSError **)error;
  60. /**
  61. * 关闭流
  62. */
  63. - (void)close;
  64. @optional
  65. // 上传源类型
  66. - (NSString *)sourceType;
  67. @end
  68. #define kQNUnknownSourceSize (-1)
  69. NS_ASSUME_NONNULL_END