feat: sync httpdns sdk/platform updates without large binaries

This commit is contained in:
robin
2026-03-04 17:59:14 +08:00
parent 853897a6f8
commit 532891fad0
700 changed files with 6096 additions and 2712 deletions

View File

@@ -0,0 +1,38 @@
//
// HttpdnsHostObjectInMemoryCache.h
// TrustHttpDNS
//
// Created by xuyecan on 2024/9/28.
// Copyright © 2024 trustapp.com. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "HttpdnsHostObject.h"
NS_ASSUME_NONNULL_BEGIN
// 这个字典在HTTPDNS中只用于存储HttpdnsHostObject对象这个对象是整个框架的核心对象用于缓存和处理域名解析结<E69E90><E7BB93>?
// 通常从缓存中获得这个对象之后会根据不同场景改变一些字段的值而且很可能发生在不同线程<E7BABF><E7A88B>?
// 而不同线程从缓存中直接读取共享对象的话很有可能发生线程竞争的情况多线程访问某个对象的同一个字段在swift环境有较高概率发生crash
// 因此除了确保字典操作的线程安全拿出对象的时候也直接copy一个复制对象返<E8B1A1><E8BF94>?HttpdnsHostObject对象实现了NSCopying协议)
@interface HttpdnsHostObjectInMemoryCache : NSObject
- (void)setHostObject:(HttpdnsHostObject *)object forCacheKey:(NSString *)key;
- (HttpdnsHostObject *)getHostObjectByCacheKey:(NSString *)key;
- (HttpdnsHostObject *)getHostObjectByCacheKey:(NSString *)key createIfNotExists:(HttpdnsHostObject *(^)(void))objectProducer;
- (void)updateQualityForCacheKey:(NSString *)key forIp:(NSString *)ip withConnectedRT:(NSInteger)connectedRT;
- (void)removeHostObjectByCacheKey:(NSString *)key;
- (void)removeAllHostObjects;
- (NSInteger)count;
- (NSArray *)allCacheKeys;
@end
NS_ASSUME_NONNULL_END