BTDB.ChunkCache.DiskChunkCache.DiskChunkCache C# (CSharp) Method

DiskChunkCache() public method

public DiskChunkCache ( IFileCollection fileCollection, int keySize, long cacheCapacity ) : System
fileCollection IFileCollection
keySize int
cacheCapacity long
return System
        public DiskChunkCache(IFileCollection fileCollection, int keySize, long cacheCapacity)
        {
            if (keySize != 20) throw new NotSupportedException("Only keySize of 20 (Usefull for SHA1) is supported for now");
            if (cacheCapacity < 1000) throw new ArgumentOutOfRangeException(nameof(cacheCapacity), "Minimum for cache capacity is 1kB");
            _fileCollection = fileCollection;
            _keySize = keySize;
            _cacheCapacity = cacheCapacity;
            cacheCapacity = cacheCapacity / 1000 * (980 - keySize); // decrease for size of HashIndex
            if (cacheCapacity / 8 > int.MaxValue)
            {
                _maxValueFileCount = checked((int)(cacheCapacity / int.MaxValue));
                _sizeLimitOfOneValueFile = int.MaxValue;
            }
            else
            {
                _maxValueFileCount = 8;
                _sizeLimitOfOneValueFile = (int)(cacheCapacity / 8);
            }
            try
            {
                LoadContent();
            }
            catch
            {
                _cache.Clear();
            }
            if (_cache.Count == 0)
            {
                foreach (var collectionFile in _fileInfos.Keys)
                {
                    _fileCollection.GetFile(collectionFile).Remove();
                }
                _fileInfos.Clear();
                _fileGeneration = 0;
            }
        }