QNTransactionManager.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. //
  2. // QNTransactionManager.h
  3. // QiniuSDK
  4. //
  5. // Created by yangsen on 2020/4/1.
  6. // Copyright © 2020 Qiniu. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. NS_ASSUME_NONNULL_BEGIN
  10. @interface QNTransaction : NSObject
  11. /// 事务名称
  12. @property(nonatomic, copy, readonly)NSString *name;
  13. /// 事务延迟执行时间 单位:秒
  14. @property(nonatomic, assign, readonly)NSInteger after;
  15. /// 事务内容
  16. @property(nonatomic, copy, readonly)void(^action)(void);
  17. /// 是否正在执行
  18. @property(nonatomic, assign, readonly)BOOL isExecuting;
  19. /// MARK: -- 构造方法
  20. /// 普通事务,事务体仅仅执行一次
  21. /// @param name 事务名称
  22. /// @param after 事务延后时间 单位:秒
  23. /// @param action 事务体
  24. + (instancetype)transaction:(NSString *)name
  25. after:(NSInteger)after
  26. action:(void(^)(void))action;
  27. /// 定时事务
  28. /// @param name 事务名称
  29. /// @param after 事务延后时间 单位:秒
  30. /// @param interval 事务执行间隔 单位:秒
  31. /// @param action 事务体
  32. + (instancetype)timeTransaction:(NSString *)name
  33. after:(NSInteger)after
  34. interval:(NSInteger)interval
  35. action:(void(^)(void))action;
  36. @end
  37. #define kQNTransactionManager [QNTransactionManager shared]
  38. @interface QNTransactionManager : NSObject
  39. /// 单例构造方法
  40. + (instancetype)shared;
  41. /// 根据name查找事务
  42. /// @param name 事务名称
  43. - (NSArray <QNTransaction *> *)transactionsForName:(NSString *)name;
  44. /// 是否存在某个名称的事务
  45. /// @param name 事务名称
  46. - (BOOL)existTransactionsForName:(NSString *)name;
  47. /// 添加一个事务
  48. /// @param transaction 事务
  49. - (void)addTransaction:(QNTransaction *)transaction;
  50. /// 移除一个事务
  51. /// @param transaction 事务
  52. - (void)removeTransaction:(QNTransaction *)transaction;
  53. /// 在下一次循环执行事务, 该事务如果未被添加到事务列表,会自动添加
  54. /// @param transaction 事务
  55. - (void)performTransaction:(QNTransaction *)transaction;
  56. /// 销毁资源 清空事务链表 销毁常驻线程
  57. - (void)destroyResource;
  58. @end
  59. NS_ASSUME_NONNULL_END