Ejemplo n.º 1
0
        internal EnumerationDataChunk GetNextChunk(EnumerationPointer pointer)
        {
            EnumerationDataChunk nextChunk = null;
            IEnumerationProvider provider  = GetProvider(pointer);

            if (pointer.isDisposable && provider != null)
            {
                provider.Dispose();
                if (_index.ContainsKey(pointer))
                {
                    _index.Remove(pointer);
                }
                nextChunk         = new EnumerationDataChunk();
                nextChunk.Pointer = pointer;
            }
            else if (provider != null)
            {
                nextChunk = provider.GetNextChunk(pointer);
                //Dispose the provider if this is the last chunk for it
                if (nextChunk.IsLastChunk)
                {
                    provider.Dispose();
                    if (_index.ContainsKey(pointer))
                    {
                        _index.Remove(pointer);
                    }
                }
            }

            return(nextChunk);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Recupera o próximo pedaço.
        /// </summary>
        /// <param name="pointer">Ponteiro para o pedaço.</param>
        /// <returns></returns>
        internal EnumerationDataChunk GetNextChunk(EnumerationPointer pointer)
        {
            EnumerationDataChunk nextChunk = null;
            IEnumerationProvider provider  = this.GetProvider(pointer);

            if (pointer.IsDisposable && (provider != null))
            {
                provider.Dispose();
                if (_index.ContainsKey(pointer))
                {
                    _index.Remove(pointer);
                }
                nextChunk         = new EnumerationDataChunk();
                nextChunk.Pointer = pointer;
                return(nextChunk);
            }
            if (provider != null)
            {
                nextChunk = provider.GetNextChunk(pointer);
                if (nextChunk.IsLastChunk)
                {
                    provider.Dispose();
                    if (_index.ContainsKey(pointer))
                    {
                        _index.Remove(pointer);
                    }
                }
            }
            return(nextChunk);
        }