diff options
Diffstat (limited to 'Rx.NET/System.Reactive.Linq/Reactive/Internal/ConcatSink.cs')
-rw-r--r-- | Rx.NET/System.Reactive.Linq/Reactive/Internal/ConcatSink.cs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/Rx.NET/System.Reactive.Linq/Reactive/Internal/ConcatSink.cs b/Rx.NET/System.Reactive.Linq/Reactive/Internal/ConcatSink.cs new file mode 100644 index 0000000..5f4a12f --- /dev/null +++ b/Rx.NET/System.Reactive.Linq/Reactive/Internal/ConcatSink.cs @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information. + +using System; +using System.Collections.Generic; + +namespace System.Reactive +{ + abstract class ConcatSink<TSource> : TailRecursiveSink<TSource> + { + public ConcatSink(IObserver<TSource> observer, IDisposable cancel) + : base(observer, cancel) + { + } + + protected override IEnumerable<IObservable<TSource>> Extract(IObservable<TSource> source) + { + var concat = source as IConcatenatable<TSource>; + if (concat != null) + return concat.GetSources(); + + return null; + } + + public override void OnCompleted() + { + _recurse(); + } + } +} |