private ChecksumObject GetChecksumObjectFromTreeNode(ChecksumObjectCache cache, Checksum checksum) { ChecksumObject checksumObject; if (cache.TryGetValue(checksum, out checksumObject)) { return(checksumObject); } // given checksum doesn't exist in this entry of tree node. but will exist // in one of tree nodes/additional assets/global assets return(null); }
private ChecksumObject SaveAndReturn(object key, ChecksumObject checksumObject, ChecksumObjectCache entry = null) { // create new entry if it is not already given ChecksumObjectCache self; if (_cache.TryGetValue(key, out self)) { // we already have entry return(self.Add(checksumObject)); } // either create new entry or re-use given one. this will let us share // whole sub checksum tree that is associated with given green node (key) entry = _cache.GetOrAdd(key, _ => entry ?? new ChecksumObjectCache()); return(entry.Add(checksumObject)); }
private void AppendChecksumObjects( Dictionary <Checksum, ChecksumObject> map, HashSet <Checksum> searchingChecksumsLeft, ChecksumObjectCache cache, CancellationToken cancellationToken) { AppendChecksumObjects(map, searchingChecksumsLeft, cache.Count, cache.GetChecksums(), c => GetChecksumObjectFromTreeNode(cache, c), cancellationToken); }
private ChecksumObject SaveAndReturn(object key, ChecksumObject checksumObject, ChecksumObjectCache entry = null) { // create new entry if it is not already given entry = _cache.GetOrAdd(key, _ => entry ?? new ChecksumObjectCache(checksumObject)); return(entry.Add(checksumObject)); }