From 87124d3e39b6aaf85ccb74724acf27d65f847cfe Mon Sep 17 00:00:00 2001 From: ObsidianMinor Date: Fri, 12 Jan 2018 16:24:01 -0600 Subject: [PATCH] Simplify Flatten extension (#933) --- .../Extensions/AsyncEnumerableExtensions.cs | 43 +------------------ 1 file changed, 2 insertions(+), 41 deletions(-) diff --git a/src/Discord.Net.Core/Extensions/AsyncEnumerableExtensions.cs b/src/Discord.Net.Core/Extensions/AsyncEnumerableExtensions.cs index 345154f1d..dd16d2943 100644 --- a/src/Discord.Net.Core/Extensions/AsyncEnumerableExtensions.cs +++ b/src/Discord.Net.Core/Extensions/AsyncEnumerableExtensions.cs @@ -1,6 +1,5 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; -using System.Threading; using System.Threading.Tasks; namespace Discord @@ -20,45 +19,7 @@ namespace Discord public static IAsyncEnumerable Flatten(this IAsyncEnumerable> source) { - return new PagedCollectionEnumerator(source); - } - - internal class PagedCollectionEnumerator : IAsyncEnumerator, IAsyncEnumerable - { - readonly IAsyncEnumerator> _source; - IEnumerator _enumerator; - - public IAsyncEnumerator GetEnumerator() => this; - - internal PagedCollectionEnumerator(IAsyncEnumerable> source) - { - _source = source.GetEnumerator(); - } - - public T Current => _enumerator.Current; - - public void Dispose() - { - _enumerator?.Dispose(); - _source.Dispose(); - } - - public async Task MoveNext(CancellationToken cancellationToken) - { - cancellationToken.ThrowIfCancellationRequested(); - - if(!_enumerator?.MoveNext() ?? true) - { - if (!await _source.MoveNext(cancellationToken).ConfigureAwait(false)) - return false; - - _enumerator?.Dispose(); - _enumerator = _source.Current.GetEnumerator(); - return _enumerator.MoveNext(); - } - - return true; - } + return source.SelectMany(enumerable => enumerable.ToAsyncEnumerable()); } } }