猎豆优选

AlibcNetPacket.h 4.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. /*
  2. * AlibcNetPacket.h
  3. *
  4. * 阿里百川电商
  5. * 项目名称:阿里巴巴电商 AlibcTradeBiz
  6. * 版本号:4.0.0.2
  7. * 发布时间:2019-09-15
  8. * 开发团队:阿里巴巴商家服务引擎团队
  9. * 阿里巴巴电商SDK答疑群号:1488705339 2071154343(阿里旺旺)
  10. * Copyright (c) 2016-2020 阿里巴巴-淘宝-百川. All rights reserved.
  11. */
  12. #import <Foundation/Foundation.h>
  13. #import "AlibcNetError.h"
  14. #ifndef AlibcNetPacket_h
  15. #define AlibcNetPacket_h
  16. //*******使用须知
  17. //函数是给子类重载用的; block是给外部调用者设置的,子类自己不要用
  18. typedef NS_ENUM(long, ALiNetPriority) {
  19. ALiNetPriorityHigh = 1, //高,马上发送
  20. ALiNetPriorityNormal, //普通,发送任务多时,可能等待200ms(等待时可以合并请求)
  21. ALiNetPriorityLow, //低,等待200ms后发送,供合并请求
  22. };
  23. typedef NS_ENUM(long, AlibcNetPacketStatus) {
  24. AlibcNetPacketStatusNormal = 1,//请求未处理
  25. AlibcNetPacketStatusSendng, //发送中
  26. AlibcNetPacketStatusSuccess, //请求成功
  27. AlibcNetPacketStatusFail, //请求失败
  28. };
  29. typedef void (^SuccessAction)(id netData); //发送成功
  30. typedef void (^ErrorAction)(AlibcNetError *error); //发送失败
  31. typedef void (^ErrorJSAction)(id error); //发送失败
  32. //mtop请求包头定义
  33. @interface AlibcNetPacketHttpHeader : NSObject
  34. @property(nonatomic, copy) NSString *cmd; //mtop命令
  35. @property(nonatomic, copy) NSString *version; //版本,默认值"1.0"
  36. @property(nonatomic, assign) BOOL needPost; //是否用post,默认是YES
  37. @property(nonatomic, assign) BOOL needLogin; //是否需要login,默认是NO
  38. @property(nonatomic, assign) BOOL needAuth; //是否需要授权,默认是NO
  39. @property(nonatomic, assign) BOOL needWua; //是否需要人机,默认是NO
  40. @property(nonatomic, assign) NSInteger sessionExpireType; // 0 AutoLoginAndMaunlLogin 1 AutoLoginOnly
  41. @property(nonatomic, copy) NSString *bizId; //组件id,默认不需要填,组件发起的才需要填
  42. @property(nonatomic, copy) NSString *ttid;// 不设置 用默认百川的ttid
  43. - (instancetype)initWithCmd:(NSString *)cmd;
  44. @end
  45. //......
  46. @interface AlibcNetPacket<ObjectType> : NSObject
  47. @property(nonatomic, assign) NSUInteger retryTime; //发送重试次数,默认(0),不重试 最大重试5次
  48. @property(nonatomic, assign) ALiNetPriority priority; //默认值(AMPNetPriorityNormal)
  49. //****** 下面变量,是netservice维护的, ******//
  50. @property(nonatomic, assign) NSUInteger retryCount; //当前是第几次重试,网络层用..子类不要动,切忌
  51. @property(nonatomic, assign) AlibcNetPacketStatus status;
  52. //block,只供外部使用者设置,子类不要用;
  53. @property(nonatomic, copy) SuccessAction successAction;
  54. @property(nonatomic, copy) ErrorAction failAction;
  55. @property(nonatomic, copy) ErrorJSAction failJSAction;
  56. //**************供子类重载用的
  57. //Mtop发送相关
  58. - (AlibcNetPacketHttpHeader *)generateMtopHeader;
  59. - (NSDictionary *)generateMtopBody;
  60. //重试通知, 如果有需要在这里修改内部数据 ,否则不用管,retryCount是第几次(1开始)
  61. //retryAction时,可以改变netType,这样重试的时候,可以改变通道方式.比如第一次用accs的,重发的时候用mtop
  62. - (void)retryAction:(NSUInteger)retryCount;
  63. //剔除sendPacke中自己已经在请求中部分.如果全部剔除完,返回YES,sendPacke会被丢弃(参考AMPBatchGetUserPacket)
  64. - (BOOL)filterNewPacket:(__kindof AlibcNetPacket *)sendPack;
  65. //等待队列,请求合并..合并待发送的包,返回YES,sendPacke会被丢弃
  66. - (BOOL)conbineWaitingPacket:(__kindof AlibcNetPacket *)sendPack;
  67. //打点逻辑,如果retry时每次都要打点,重载这个..一般的成功失败打点直接successAction,failAction里挂载打点即可..
  68. - (void)trackActionSuccess:(BOOL)isSuccess error:(AlibcNetError *)error duration:(double)durationMillisecond;
  69. //**********给子类用的辅助函数
  70. //是否有效,用户切换后则无效 .没事不要重载修改
  71. - (BOOL)isValued;
  72. - (BOOL)sendPacket;
  73. - (BOOL)sendJSPacket;
  74. @end
  75. #endif