public override void Fill(StreamCache.DataBlock uncompressedBlockToReturn) { long compressedDataPos; int compressedDataSize; GetCompressedBlockInfo(uncompressedBlockToReturn.m_position, out compressedDataPos, out compressedDataSize); using (var compressedData = new StreamCacheStream(m_input, compressedDataPos, compressedDataSize)) using (var uncompressedData = new DeflateStream(compressedData, CompressionMode.Decompress)) uncompressedBlockToReturn.m_len = uncompressedData.Read(uncompressedBlockToReturn.m_data, 0, uncompressedBlockToReturn.m_data.Length); uncompressedBlockToReturn.m_filled = true; }
public override void Fill(StreamCache.DataBlock block) { lock (this) { if (m_curPostion != block.m_position) { m_baseStream.Position = block.m_position; } block.m_len = m_baseStream.Read(block.m_data, 0, block.m_data.Length); m_curPostion = block.m_position + block.m_len; } }