Ejemplo n.º 1
0
            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);
            }
Ejemplo n.º 2
0
            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));
            }
Ejemplo n.º 3
0
 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);
 }
Ejemplo n.º 4
0
 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));
 }