protected override void ProcessDataBuffer(FileBlock fileBlockToProcess, FileBlock freeFileBlock) { using (var memoryStream = new MemoryStream(fileBlockToProcess.Buffer, 0, fileBlockToProcess.BufferSize)) { using (var gZipStream = new GZipStream(memoryStream, CompressionMode.Decompress, true)) { freeFileBlock.BufferSize = gZipStream.Read(freeFileBlock.Buffer, 0, GZipConstants.BufferSize); } } }
protected override void ProcessDataBuffer(FileBlock fileBlockToProcess, FileBlock freeFileBlock) { using (var memoryStream = new MemoryStream(freeFileBlock.Buffer, 0, GZipConstants.MaxCompressedBufferSize)) { using (var gZipStream = new GZipStream(memoryStream, CompressionMode.Compress, true)) { gZipStream.Write(fileBlockToProcess.Buffer, 0, fileBlockToProcess.BufferSize); } freeFileBlock.BufferSize = (int)memoryStream.Position; } }
protected static FileBlock[] CreateBlocks(int blockSize, int blockCount) { if (blockSize <= 0) { throw new ArgumentOutOfRangeException(nameof(blockSize)); } if (blockCount <= 0) { throw new ArgumentOutOfRangeException(nameof(blockCount)); } var blocks = new FileBlock[blockCount]; for (int i = 0; i < blockCount; i++) { blocks[i] = new FileBlock(new byte[blockSize]); } return(blocks); }
protected override int ReadSourceFile(FileStream fileStream, FileBlock freeFileBlock) { int bytesRead; if ((bytesRead = fileStream.Read(_blockSizeBuffer, 0, GZipConstants.BlockSizeSize)) < GZipConstants.BlockSizeSize) { if (bytesRead == 0) { return(0); } throw new FileFormatException(_badArchiveMessage); } freeFileBlock.BufferSize = BitConverter.ToInt32(_blockSizeBuffer, 0); if (fileStream.Read(freeFileBlock.Buffer, 0, freeFileBlock.BufferSize) < freeFileBlock.BufferSize) { throw new FileFormatException(_badArchiveMessage); } return(freeFileBlock.BufferSize); }
protected abstract void WriteDestinationFile(FileStream fileStream, FileBlock fileBlockToWrite);
protected abstract int ReadSourceFile(FileStream fileStream, FileBlock freeFileBlock);
protected abstract void ProcessDataBuffer(FileBlock fileBlockToProcess, FileBlock freeFileBlock);
protected override void WriteDestinationFile(FileStream fileStream, FileBlock fileBlockToWrite) { fileStream.Write(fileBlockToWrite.Buffer, 0, fileBlockToWrite.BufferSize); }
protected override void WriteDestinationFile(FileStream fileStream, FileBlock fileBlockToWrite) { fileStream.Write(BitConverter.GetBytes(fileBlockToWrite.BufferSize), 0, GZipConstants.BlockSizeSize); fileStream.Write(fileBlockToWrite.Buffer, 0, fileBlockToWrite.BufferSize); }
protected override int ReadSourceFile(FileStream fileStream, FileBlock freeFileBlock) { freeFileBlock.BufferSize = fileStream.Read(freeFileBlock.Buffer, 0, GZipConstants.BufferSize); return(freeFileBlock.BufferSize); }