| ... | ... | @@ -61,13 +61,14 @@ pub const CacheHash = struct { |
| 61 | 61 | }; |
| 62 | 62 | } |
| 63 | 63 | |
| 64 | | pub fn cache_buf(self: *@This(), val: []const u8) !void { |
| 64 | pub fn cache_buf(self: *@This(), val: []const u8) void { |
| 65 | 65 | debug.assert(self.manifest_file_path == null); |
| 66 | 66 | |
| 67 | 67 | self.blake3.update(val); |
| 68 | self.blake3.update(&[_]u8{0}); |
| 68 | 69 | } |
| 69 | 70 | |
| 70 | | pub fn cache(self: *@This(), val: var) !void { |
| 71 | pub fn cache(self: *@This(), val: var) void { |
| 71 | 72 | debug.assert(self.manifest_file_path == null); |
| 72 | 73 | |
| 73 | 74 | const val_type = @TypeOf(val); |
| ... | ... | @@ -76,14 +77,17 @@ pub const CacheHash = struct { |
| 76 | 77 | const buf_len = @divExact(int_info.bits, 8); |
| 77 | 78 | var buf: [buf_len]u8 = undefined; |
| 78 | 79 | mem.writeIntNative(val_type, &buf, val); |
| 79 | | self.blake3.update(&buf); |
| 80 | self.cache_buf(&buf); |
| 80 | 81 | } else { |
| 81 | 82 | @compileError("Unsupported integer size. Please use a multiple of 8, manually convert to a u8 slice."); |
| 82 | 83 | }, |
| 84 | .Bool => { |
| 85 | var buf: [1]u8 = undefined; |
| 86 | buf[0] = if (val) 1 else 0; |
| 87 | self.blake3.update(&buf); |
| 88 | }, |
| 83 | 89 | else => @compileError("Unsupported type"), |
| 84 | 90 | } |
| 85 | | |
| 86 | | self.blake3.update(&[_]u8{0}); |
| 87 | 91 | } |
| 88 | 92 | |
| 89 | 93 | pub fn cache_file(self: *@This(), file_path: []const u8) !void { |
| ... | ... | @@ -92,7 +96,7 @@ pub const CacheHash = struct { |
| 92 | 96 | var cache_hash_file = try self.files.addOne(); |
| 93 | 97 | cache_hash_file.path = try fs.path.resolve(self.alloc, &[_][]const u8{file_path}); |
| 94 | 98 | |
| 95 | | try self.cache_buf(cache_hash_file.path.?); |
| 99 | self.cache_buf(cache_hash_file.path.?); |
| 96 | 100 | } |
| 97 | 101 | |
| 98 | 102 | pub fn hit(self: *@This(), out_digest: *ArrayList(u8)) !bool { |
| ... | ... | @@ -321,8 +325,9 @@ test "cache file and the recall it" { |
| 321 | 325 | var ch = try CacheHash.init(testing.allocator, temp_manifest_dir); |
| 322 | 326 | defer ch.release(); |
| 323 | 327 | |
| 324 | | try ch.cache(@as(u16, 1234)); |
| 325 | | try ch.cache_buf("1234"); |
| 328 | ch.cache(true); |
| 329 | ch.cache(@as(u16, 1234)); |
| 330 | ch.cache_buf("1234"); |
| 326 | 331 | try ch.cache_file("test.txt"); |
| 327 | 332 | |
| 328 | 333 | // There should be nothing in the cache |
| ... | ... | @@ -334,8 +339,9 @@ test "cache file and the recall it" { |
| 334 | 339 | var ch = try CacheHash.init(testing.allocator, temp_manifest_dir); |
| 335 | 340 | defer ch.release(); |
| 336 | 341 | |
| 337 | | try ch.cache(@as(u16, 1234)); |
| 338 | | try ch.cache_buf("1234"); |
| 342 | ch.cache(true); |
| 343 | ch.cache(@as(u16, 1234)); |
| 344 | ch.cache_buf("1234"); |
| 339 | 345 | try ch.cache_file("test.txt"); |
| 340 | 346 | |
| 341 | 347 | // Cache hit! We just "built" the same file |