DoxigAlpha

unhit

Reset self.hash.hasher to the state it should be in after hit returns false. The hasher contains the original input digest, and all original input file digests (i.e. not including post files). Assumes that bin_digest is populated for all files up to input_file_count. As such, this is not necessarily safe to call within hit.

Function parameters

Parameters

#
self:*Manifest
input_file_count:usize

Type definitions in this namespace

Types

#

Functions in this namespace

Functions

#
obtain
Be sure to call `Manifest.deinit` after successful initialization.
readSmallFile
On operating systems that support symlinks, does a readlink.
writeSmallFile
On operating systems that support symlinks, does a symlink.

This is 128 bits - Even with 2^54 cache entries, the probably of a collision would be under 10^-6

Values

#
bin_digest_len
This is 128 bits - Even with 2^54 cache entries, the probably of a collision would be under 10^-6
hex_digest_len
= bin_digest_len * 2
hasher_init
Initial state with random bytes, that can be copied.

Source

Implementation

#
pub fn unhit(self: *Manifest, bin_digest: BinDigest, input_file_count: usize) void {
    // Reset the hash.
    self.hash.hasher = hasher_init;
    self.hash.hasher.update(&bin_digest);

    // Remove files not in the initial hash.
    while (self.files.count() != input_file_count) {
        var file = self.files.pop().?;
        file.key.deinit(self.cache.gpa);
    }

    for (self.files.keys()) |file| {
        self.hash.hasher.update(&file.bin_digest);
    }
}