Exemplo n.º 1
0
        public SignatureWorker(FileInfo inputFileInfo, long blockSize)
        {
            if (inputFileInfo == null)
            {
                throw new ArgumentNullException("inputFileInfo");
            }
            InputFileInfo = inputFileInfo;

            if (blockSize == 0)
            {
                throw new ArgumentException("Размер блока должен быть больше 0", "blockSize");
            }

            BlockSize = blockSize;

            _threadForHash = GetCountThreadForHash();

            //with small blocks too many memory needed
            long denum = BlockSize > 512 ? BlockSize : 512;

            _maxQueuePerThread = _maxBufferSize / denum;

            if (_maxQueuePerThread == 0)
            {
                _maxQueuePerThread = 1;
            }


            _hashProducersConsumers = new QueueWithLock <SHA256Block>(_maxQueuePerThread);
        }
Exemplo n.º 2
0
 public GZipDecompressor(FileInfo inFileInfo, FileInfo outFileInfo) : base(inFileInfo, outFileInfo)
 {
     _numReadThreads         = GetNumReadThreads();
     _decompressedBlocksProd = new QueueWithLock <DataBlock> [_numReadThreads];
     for (int i = 0; i < _decompressedBlocksProd.Length; i++)
     {
         _decompressedBlocksProd[i] = new QueueWithLock <DataBlock>(100);
     }
 }
Exemplo n.º 3
0
        public GZipCompressor(FileInfo inFileInfo, FileInfo outFileInfo) : base(inFileInfo, outFileInfo)
        {
            _numReadThreads = GetNumReadThreads();

            _compressedBlocksProd = new QueueWithLock <DataBlock> [_numReadThreads];
            int producerMaxSize = 1024 * 1024 * 100 / _blockSize / _compressedBlocksProd.Length;

            if (producerMaxSize == 0)
            {
                producerMaxSize = 1;
            }

            for (int i = 0; i < _compressedBlocksProd.Length; i++)
            {
                _compressedBlocksProd[i] =
                    new QueueWithLock <DataBlock>(producerMaxSize);
            }
        }