示例#1
0
        private bool GetNextPageGranulePos(out long granulePos)
        {
            var pageCount = _pageOffsets.Count;

            while (pageCount == _pageOffsets.Count && !HasAllPages)
            {
                _reader.Lock();
                try
                {
                    if (!_reader.ReadNextPage())
                    {
                        HasAllPages = true;
                        continue;
                    }

                    if (pageCount < _pageOffsets.Count)
                    {
                        granulePos = _reader.GranulePosition;
                        return(true);
                    }
                }
                finally
                {
                    _reader.Release();
                }
            }
            granulePos = 0;
            return(false);
        }