aboutsummaryrefslogtreecommitdiff
path: root/src/network_thread.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/network_thread.zig')
-rw-r--r--src/network_thread.zig31
1 files changed, 18 insertions, 13 deletions
diff --git a/src/network_thread.zig b/src/network_thread.zig
index 0a39f574a..ba1db6524 100644
--- a/src/network_thread.zig
+++ b/src/network_thread.zig
@@ -47,21 +47,26 @@ const CachedAddressList = struct {
pub const AddressListCache = std.HashMap(u64, CachedAddressList, IdentityContext(u64), 80);
pub var address_list_cached: AddressListCache = undefined;
-pub fn getAddressList(allocator: std.mem.Allocator, name: []const u8, port: u16) !*CachedAddressList {
- const hash = CachedAddressList.hash(name, port);
- const now = @intCast(u64, @maximum(0, std.time.milliTimestamp()));
- if (address_list_cached.getPtr(hash)) |cached| {
- if (cached.expire_after > now) {
- return cached;
- }
+pub fn getAddressList(allocator: std.mem.Allocator, name: []const u8, port: u16) !*std.net.AddressList {
+ // const hash = CachedAddressList.hash(name, port);
+ // const now = @intCast(u64, @maximum(0, std.time.milliTimestamp()));
+ // if (address_list_cached.getPtr(hash)) |cached| {
+ // if (cached.expire_after > now) {
+ // return cached;
+ // }
- cached.address_list.deinit();
- }
+ // cached.address_list.deinit();
+ // }
+
+ return try std.net.getAddressList(allocator, name, port);
+}
- const address_list = try std.net.getAddressList(allocator, name, port);
- var entry = try address_list_cached.getOrPut(hash);
- entry.value_ptr.* = CachedAddressList.init(hash, address_list, now);
- return entry.value_ptr;
+pub var has_warmed = false;
+pub fn warmup() !void {
+ if (has_warmed) return;
+ has_warmed = true;
+ try init();
+ global.pool.forceSpawn();
}
pub fn init() !void {