QNDnsPrefetch.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. //
  2. // QNDnsPrefetch.h
  3. // QnDNS
  4. //
  5. // Created by yangsen on 2020/3/26.
  6. // Copyright © 2020 com.qiniu. All rights reserved.
  7. //
  8. #import "QNDns.h"
  9. #import "QNUpToken.h"
  10. #import "QNConfiguration.h"
  11. #import "QNTransactionManager.h"
  12. NS_ASSUME_NONNULL_BEGIN
  13. #define kQNDnsPrefetch [QNDnsPrefetch shared]
  14. @interface QNDnsPrefetch : NSObject
  15. /// 最近一次预取错误信息
  16. @property(nonatomic, copy, readonly)NSString *lastPrefetchedErrorMessage;
  17. + (instancetype)shared;
  18. /// 根据host从缓存中读取DNS信息
  19. /// @param host 域名
  20. - (NSArray <id <QNIDnsNetworkAddress> > *)getInetAddressByHost:(NSString *)host;
  21. /// 通过安全的方式预取 dns
  22. - (NSString *)prefetchHostBySafeDns:(NSString *)host error:(NSError **)error;
  23. - (void)clearDnsCache:(NSError **)error;
  24. @end
  25. @interface QNTransactionManager(Dns)
  26. /// 添加加载本地dns事务
  27. - (void)addDnsLocalLoadTransaction;
  28. /// 添加检测并预取dns事务 如果未开启DNS 或 事务队列中存在token对应的事务未处理,则返回NO
  29. /// @param currentZone 当前区域
  30. /// @param token token信息
  31. - (BOOL)addDnsCheckAndPrefetchTransaction:(QNZone *)currentZone token:(QNUpToken *)token;
  32. /// 设置定时事务:检测已缓存DNS有效情况事务 无效会重新预取
  33. - (void)setDnsCheckWhetherCachedValidTransactionAction;
  34. @end
  35. #define kQNDnsSourceDoh @"doh"
  36. #define kQNDnsSourceUdp @"dns"
  37. #define kQNDnsSourceDnspod @"dnspod"
  38. #define kQNDnsSourceSystem @"system"
  39. #define kQNDnsSourceCustom @"customized"
  40. #define kQNDnsSourceNone @"none"
  41. BOOL kQNIsDnsSourceDoh(NSString * _Nullable source);
  42. BOOL kQNIsDnsSourceUdp(NSString * _Nullable source);
  43. BOOL kQNIsDnsSourceDnsPod(NSString * _Nullable source);
  44. BOOL kQNIsDnsSourceSystem(NSString * _Nullable source);
  45. BOOL kQNIsDnsSourceCustom(NSString * _Nullable source);
  46. NS_ASSUME_NONNULL_END