Exemplo n.º 1
0
        private int ReadBlocks(byte[] buffer, int offset, int count)
        {
            int bytesRead = 0;

            if (_currentBlock == null)
            {
                NextBlock();
            }
            for (;;)
            {
                try
                {
                    if (bytesRead >= count)
                    {
                        break;
                    }
                    int remaining = count - bytesRead;
                    int newOffset = offset + bytesRead;
                    int justRead  = _currentBlock.Read(buffer, newOffset, remaining);
                    if (justRead < remaining)
                    {
                        NextBlock();
                    }
                    bytesRead += justRead;
                }
                catch (XZIndexMarkerReachedException)
                {
                    break;
                }
            }
            return(bytesRead);
        }