QueryLanguageEx
using System.Collections.Generic;
using System.Linq;
using System.Reactive.Concurrency;
using System.Reactive.Disposables;
using System.Reactive.Linq.ObservableImpl;
using System.Reactive.Subjects;
using System.Runtime.CompilerServices;
namespace System.Reactive.Linq
{
[System.Runtime.CompilerServices.NullableContext(1)]
[System.Runtime.CompilerServices.Nullable(0)]
internal class QueryLanguageEx : IQueryLanguageEx
{
[System.Runtime.CompilerServices.Nullable(new byte[] {
0,
1
})]
private sealed class CreateWithEnumerableObservable<[System.Runtime.CompilerServices.Nullable(2)] TResult> : ObservableBase<TResult>
{
private readonly Func<IObserver<TResult>, IEnumerable<IObservable<object>>> _iteratorMethod;
public CreateWithEnumerableObservable(Func<IObserver<TResult>, IEnumerable<IObservable<object>>> iteratorMethod)
{
_iteratorMethod = iteratorMethod;
}
protected override IDisposable SubscribeCore(IObserver<TResult> observer)
{
return Observable.Concat<object>(_iteratorMethod(observer)).Subscribe(new TerminalOnlyObserver<TResult>(observer));
}
}
[System.Runtime.CompilerServices.Nullable(0)]
private sealed class TerminalOnlyObserver<[System.Runtime.CompilerServices.Nullable(2)] TResult> : IObserver<object>
{
private readonly IObserver<TResult> _observer;
public TerminalOnlyObserver(IObserver<TResult> observer)
{
_observer = observer;
}
public void OnCompleted()
{
_observer.OnCompleted();
}
public void OnError(Exception error)
{
_observer.OnError(error);
}
public void OnNext(object value)
{
}
}
[System.Runtime.CompilerServices.Nullable(new byte[] {
0,
1
})]
private sealed class CreateWithOnlyEnumerableObservable<[System.Runtime.CompilerServices.Nullable(2)] TResult> : ObservableBase<TResult>
{
private readonly Func<IEnumerable<IObservable<object>>> _iteratorMethod;
public CreateWithOnlyEnumerableObservable(Func<IEnumerable<IObservable<object>>> iteratorMethod)
{
_iteratorMethod = iteratorMethod;
}
protected override IDisposable SubscribeCore(IObserver<TResult> observer)
{
return Observable.Concat<object>(_iteratorMethod()).Subscribe(new TerminalOnlyObserver<TResult>(observer));
}
}
[System.Runtime.CompilerServices.Nullable(new byte[] {
0,
1
})]
private sealed class ExpandObservable<[System.Runtime.CompilerServices.Nullable(2)] TSource> : ObservableBase<TSource>
{
private readonly IObservable<TSource> _source;
private readonly Func<TSource, IObservable<TSource>> _selector;
private readonly IScheduler _scheduler;
public ExpandObservable(IObservable<TSource> source, Func<TSource, IObservable<TSource>> selector, IScheduler scheduler)
{
_source = source;
_selector = selector;
_scheduler = scheduler;
}
protected override IDisposable SubscribeCore(IObserver<TSource> observer)
{
object outGate = new object();
Queue<IObservable<TSource>> q = new Queue<IObservable<TSource>>();
SerialDisposable i = new SerialDisposable();
CompositeDisposable d = new CompositeDisposable {
i
};
int activeCount = 0;
bool isAcquired = false;
lock (q) {
q.Enqueue(_source);
activeCount++;
}
<>c__DisplayClass4_0 <>c__DisplayClass4_;
<>c__DisplayClass4_.<SubscribeCore>g__ensureActive|0();
return d;
}
}
[System.Runtime.CompilerServices.Nullable(new byte[] {
0,
1,
1
})]
private sealed class ForkJoinObservable<[System.Runtime.CompilerServices.Nullable(2)] TSource> : ObservableBase<TSource[]>
{
private readonly IEnumerable<IObservable<TSource>> _sources;
public ForkJoinObservable(IEnumerable<IObservable<TSource>> sources)
{
_sources = sources;
}
protected override IDisposable SubscribeCore(IObserver<TSource[]> observer)
{
IObservable<TSource>[] array = Enumerable.ToArray<IObservable<TSource>>(_sources);
int num = array.Length;
if (num == 0) {
observer.OnCompleted();
return Disposable.Empty;
}
CompositeDisposable group = new CompositeDisposable(array.Length);
object gate = new object();
bool finished = false;
bool[] hasResults = new bool[num];
bool[] hasCompleted = new bool[num];
List<TSource> results = new List<TSource>(num);
lock (gate) {
for (int i = 0; i < num; i++) {
int currentIndex = i;
IObservable<TSource> source = array[i];
results.Add(default(TSource));
group.Add(ObservableExtensions.Subscribe<TSource>(source, (Action<TSource>)delegate(TSource value) {
lock (gate) {
if (!finished) {
hasResults[currentIndex] = true;
results[currentIndex] = value;
}
}
}, (Action<Exception>)delegate(Exception error) {
lock (gate) {
finished = true;
observer.OnError(error);
group.Dispose();
}
}, (Action)delegate {
lock (gate) {
if (!finished) {
if (!hasResults[currentIndex])
observer.OnCompleted();
else {
hasCompleted[currentIndex] = true;
bool[] array2 = hasCompleted;
for (int j = 0; j < array2.Length; j++) {
if (!array2[j])
return;
}
finished = true;
observer.OnNext(results.ToArray());
observer.OnCompleted();
}
}
}
}));
}
}
return group;
}
}
[System.Runtime.CompilerServices.Nullable(0)]
private class ChainObservable<[System.Runtime.CompilerServices.Nullable(2)] T> : ISubject<IObservable<T>, T>, IObserver<IObservable<T>>, IObservable<T>
{
private readonly T _head;
private readonly AsyncSubject<IObservable<T>> _tail = new AsyncSubject<IObservable<T>>();
public ChainObservable(T head)
{
_head = head;
}
public IDisposable Subscribe(IObserver<T> observer)
{
CompositeDisposable compositeDisposable = new CompositeDisposable();
compositeDisposable.Add(Scheduler.ScheduleAction<(IObserver<T>, CompositeDisposable, ChainObservable<T>)>((IScheduler)CurrentThreadScheduler.Instance, (observer, compositeDisposable, this), (Action<(IObserver<T>, CompositeDisposable, ChainObservable<T>)>)delegate((IObserver<T> observer, CompositeDisposable g, ChainObservable<T> this) state) {
state.observer.OnNext(state.this._head);
state.g.Add(Observable.Merge<T>((IObservable<IObservable<T>>)state.this._tail).Subscribe(state.observer));
}));
return compositeDisposable;
}
public void OnCompleted()
{
OnNext(Observable.Empty<T>());
}
public void OnError(Exception error)
{
OnNext(Observable.Throw<T>(error));
}
public void OnNext(IObservable<T> value)
{
_tail.OnNext(value);
_tail.OnCompleted();
}
}
[System.Runtime.CompilerServices.Nullable(new byte[] {
0,
1
})]
private sealed class CombineObservable<[System.Runtime.CompilerServices.Nullable(2)] TLeft, [System.Runtime.CompilerServices.Nullable(2)] TRight, [System.Runtime.CompilerServices.Nullable(2)] TResult> : ObservableBase<TResult>
{
private readonly IObservable<TLeft> _leftSource;
private readonly IObservable<TRight> _rightSource;
private readonly Func<IObserver<TResult>, IDisposable, IDisposable, IObserver<Either<Notification<TLeft>, Notification<TRight>>>> _combinerSelector;
public CombineObservable(IObservable<TLeft> leftSource, IObservable<TRight> rightSource, Func<IObserver<TResult>, IDisposable, IDisposable, IObserver<Either<Notification<TLeft>, Notification<TRight>>>> combinerSelector)
{
_leftSource = leftSource;
_rightSource = rightSource;
_combinerSelector = combinerSelector;
}
protected override IDisposable SubscribeCore(IObserver<TResult> observer)
{
SingleAssignmentDisposable singleAssignmentDisposable = new SingleAssignmentDisposable();
SingleAssignmentDisposable singleAssignmentDisposable2 = new SingleAssignmentDisposable();
IObserver<Either<Notification<TLeft>, Notification<TRight>>> observer2 = _combinerSelector(observer, singleAssignmentDisposable, singleAssignmentDisposable2);
object gate = new object();
singleAssignmentDisposable.Disposable = Observable.Synchronize<Either<Notification<TLeft>, Notification<TRight>>>(Observable.Select<Notification<TLeft>, Either<Notification<TLeft>, Notification<TRight>>>(Observable.Materialize<TLeft>(_leftSource), (Func<Notification<TLeft>, Either<Notification<TLeft>, Notification<TRight>>>)((Notification<TLeft> x) => Either<Notification<TLeft>, Notification<TRight>>.CreateLeft(x))), gate).Subscribe(observer2);
singleAssignmentDisposable2.Disposable = Observable.Synchronize<Either<Notification<TLeft>, Notification<TRight>>>(Observable.Select<Notification<TRight>, Either<Notification<TLeft>, Notification<TRight>>>(Observable.Materialize<TRight>(_rightSource), (Func<Notification<TRight>, Either<Notification<TLeft>, Notification<TRight>>>)((Notification<TRight> x) => Either<Notification<TLeft>, Notification<TRight>>.CreateRight(x))), gate).Subscribe(observer2);
return StableCompositeDisposable.Create(singleAssignmentDisposable, singleAssignmentDisposable2);
}
}
[return: System.Runtime.CompilerServices.Nullable(new byte[] {
1,
0,
1,
1
})]
public virtual IObservable<(TSource1, TSource2)> CombineLatest<[System.Runtime.CompilerServices.Nullable(2)] TSource1, [System.Runtime.CompilerServices.Nullable(2)] TSource2>(IObservable<TSource1> source1, IObservable<TSource2> source2)
{
return new CombineLatest<TSource1, TSource2, (TSource1, TSource2)>(source1, source2, (Func<TSource1, TSource2, (TSource1, TSource2)>)((TSource1 t1, TSource2 t2) => (t1, t2)));
}
[return: System.Runtime.CompilerServices.Nullable(new byte[] {
1,
0,
1,
1,
1
})]
public virtual IObservable<(TSource1, TSource2, TSource3)> CombineLatest<[System.Runtime.CompilerServices.Nullable(2)] TSource1, [System.Runtime.CompilerServices.Nullable(2)] TSource2, [System.Runtime.CompilerServices.Nullable(2)] TSource3>(IObservable<TSource1> source1, IObservable<TSource2> source2, IObservable<TSource3> source3)
{
return new CombineLatest<TSource1, TSource2, TSource3, (TSource1, TSource2, TSource3)>(source1, source2, source3, (Func<TSource1, TSource2, TSource3, (TSource1, TSource2, TSource3)>)((TSource1 t1, TSource2 t2, TSource3 t3) => (t1, t2, t3)));
}
[return: System.Runtime.CompilerServices.Nullable(new byte[] {
1,
0,
1,
1,
1,
1
})]
public virtual IObservable<(TSource1, TSource2, TSource3, TSource4)> CombineLatest<[System.Runtime.CompilerServices.Nullable(2)] TSource1, [System.Runtime.CompilerServices.Nullable(2)] TSource2, [System.Runtime.CompilerServices.Nullable(2)] TSource3, [System.Runtime.CompilerServices.Nullable(2)] TSource4>(IObservable<TSource1> source1, IObservable<TSource2> source2, IObservable<TSource3> source3, IObservable<TSource4> source4)
{
return new CombineLatest<TSource1, TSource2, TSource3, TSource4, (TSource1, TSource2, TSource3, TSource4)>(source1, source2, source3, source4, (Func<TSource1, TSource2, TSource3, TSource4, (TSource1, TSource2, TSource3, TSource4)>)((TSource1 t1, TSource2 t2, TSource3 t3, TSource4 t4) => (t1, t2, t3, t4)));
}
[return: System.Runtime.CompilerServices.Nullable(new byte[] {
1,
0,
1,
1,
1,
1,
1
})]
public virtual IObservable<(TSource1, TSource2, TSource3, TSource4, TSource5)> CombineLatest<[System.Runtime.CompilerServices.Nullable(2)] TSource1, [System.Runtime.CompilerServices.Nullable(2)] TSource2, [System.Runtime.CompilerServices.Nullable(2)] TSource3, [System.Runtime.CompilerServices.Nullable(2)] TSource4, [System.Runtime.CompilerServices.Nullable(2)] TSource5>(IObservable<TSource1> source1, IObservable<TSource2> source2, IObservable<TSource3> source3, IObservable<TSource4> source4, IObservable<TSource5> source5)
{
return new CombineLatest<TSource1, TSource2, TSource3, TSource4, TSource5, (TSource1, TSource2, TSource3, TSource4, TSource5)>(source1, source2, source3, source4, source5, (Func<TSource1, TSource2, TSource3, TSource4, TSource5, (TSource1, TSource2, TSource3, TSource4, TSource5)>)((TSource1 t1, TSource2 t2, TSource3 t3, TSource4 t4, TSource5 t5) => (t1, t2, t3, t4, t5)));
}
[return: System.Runtime.CompilerServices.Nullable(new byte[] {
1,
0,
1,
1,
1,
1,
1,
1
})]
public virtual IObservable<(TSource1, TSource2, TSource3, TSource4, TSource5, TSource6)> CombineLatest<[System.Runtime.CompilerServices.Nullable(2)] TSource1, [System.Runtime.CompilerServices.Nullable(2)] TSource2, [System.Runtime.CompilerServices.Nullable(2)] TSource3, [System.Runtime.CompilerServices.Nullable(2)] TSource4, [System.Runtime.CompilerServices.Nullable(2)] TSource5, [System.Runtime.CompilerServices.Nullable(2)] TSource6>(IObservable<TSource1> source1, IObservable<TSource2> source2, IObservable<TSource3> source3, IObservable<TSource4> source4, IObservable<TSource5> source5, IObservable<TSource6> source6)
{
return new CombineLatest<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, (TSource1, TSource2, TSource3, TSource4, TSource5, TSource6)>(source1, source2, source3, source4, source5, source6, (Func<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, (TSource1, TSource2, TSource3, TSource4, TSource5, TSource6)>)((TSource1 t1, TSource2 t2, TSource3 t3, TSource4 t4, TSource5 t5, TSource6 t6) => (t1, t2, t3, t4, t5, t6)));
}
[return: System.Runtime.CompilerServices.Nullable(new byte[] {
1,
0,
1,
1,
1,
1,
1,
1,
1
})]
public virtual IObservable<(TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7)> CombineLatest<[System.Runtime.CompilerServices.Nullable(2)] TSource1, [System.Runtime.CompilerServices.Nullable(2)] TSource2, [System.Runtime.CompilerServices.Nullable(2)] TSource3, [System.Runtime.CompilerServices.Nullable(2)] TSource4, [System.Runtime.CompilerServices.Nullable(2)] TSource5, [System.Runtime.CompilerServices.Nullable(2)] TSource6, [System.Runtime.CompilerServices.Nullable(2)] TSource7>(IObservable<TSource1> source1, IObservable<TSource2> source2, IObservable<TSource3> source3, IObservable<TSource4> source4, IObservable<TSource5> source5, IObservable<TSource6> source6, IObservable<TSource7> source7)
{
return new CombineLatest<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, (TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7)>(source1, source2, source3, source4, source5, source6, source7, (Func<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, (TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7)>)((TSource1 t1, TSource2 t2, TSource3 t3, TSource4 t4, TSource5 t5, TSource6 t6, TSource7 t7) => (t1, t2, t3, t4, t5, t6, t7)));
}
[return: System.Runtime.CompilerServices.Nullable(new byte[] {
1,
0,
1,
1,
1,
1,
1,
1,
1,
0,
1
})]
public virtual IObservable<(TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8)> CombineLatest<[System.Runtime.CompilerServices.Nullable(2)] TSource1, [System.Runtime.CompilerServices.Nullable(2)] TSource2, [System.Runtime.CompilerServices.Nullable(2)] TSource3, [System.Runtime.CompilerServices.Nullable(2)] TSource4, [System.Runtime.CompilerServices.Nullable(2)] TSource5, [System.Runtime.CompilerServices.Nullable(2)] TSource6, [System.Runtime.CompilerServices.Nullable(2)] TSource7, [System.Runtime.CompilerServices.Nullable(2)] TSource8>(IObservable<TSource1> source1, IObservable<TSource2> source2, IObservable<TSource3> source3, IObservable<TSource4> source4, IObservable<TSource5> source5, IObservable<TSource6> source6, IObservable<TSource7> source7, IObservable<TSource8> source8)
{
return new CombineLatest<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, (TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8)>(source1, source2, source3, source4, source5, source6, source7, source8, (Func<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, (TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8)>)((TSource1 t1, TSource2 t2, TSource3 t3, TSource4 t4, TSource5 t5, TSource6 t6, TSource7 t7, TSource8 t8) => (t1, t2, t3, t4, t5, t6, t7, t8)));
}
[return: System.Runtime.CompilerServices.Nullable(new byte[] {
1,
0,
1,
1
})]
public virtual IObservable<(TSource1, TSource2)> Zip<[System.Runtime.CompilerServices.Nullable(2)] TSource1, [System.Runtime.CompilerServices.Nullable(2)] TSource2>(IObservable<TSource1> source1, IObservable<TSource2> source2)
{
return new Zip<TSource1, TSource2, (TSource1, TSource2)>.Observable(source1, source2, (Func<TSource1, TSource2, (TSource1, TSource2)>)((TSource1 t1, TSource2 t2) => (t1, t2)));
}
[return: System.Runtime.CompilerServices.Nullable(new byte[] {
1,
0,
1,
1,
1
})]
public virtual IObservable<(TSource1, TSource2, TSource3)> Zip<[System.Runtime.CompilerServices.Nullable(2)] TSource1, [System.Runtime.CompilerServices.Nullable(2)] TSource2, [System.Runtime.CompilerServices.Nullable(2)] TSource3>(IObservable<TSource1> source1, IObservable<TSource2> source2, IObservable<TSource3> source3)
{
return new Zip<TSource1, TSource2, TSource3, (TSource1, TSource2, TSource3)>(source1, source2, source3, (Func<TSource1, TSource2, TSource3, (TSource1, TSource2, TSource3)>)((TSource1 t1, TSource2 t2, TSource3 t3) => (t1, t2, t3)));
}
[return: System.Runtime.CompilerServices.Nullable(new byte[] {
1,
0,
1,
1,
1,
1
})]
public virtual IObservable<(TSource1, TSource2, TSource3, TSource4)> Zip<[System.Runtime.CompilerServices.Nullable(2)] TSource1, [System.Runtime.CompilerServices.Nullable(2)] TSource2, [System.Runtime.CompilerServices.Nullable(2)] TSource3, [System.Runtime.CompilerServices.Nullable(2)] TSource4>(IObservable<TSource1> source1, IObservable<TSource2> source2, IObservable<TSource3> source3, IObservable<TSource4> source4)
{
return new Zip<TSource1, TSource2, TSource3, TSource4, (TSource1, TSource2, TSource3, TSource4)>(source1, source2, source3, source4, (Func<TSource1, TSource2, TSource3, TSource4, (TSource1, TSource2, TSource3, TSource4)>)((TSource1 t1, TSource2 t2, TSource3 t3, TSource4 t4) => (t1, t2, t3, t4)));
}
[return: System.Runtime.CompilerServices.Nullable(new byte[] {
1,
0,
1,
1,
1,
1,
1
})]
public virtual IObservable<(TSource1, TSource2, TSource3, TSource4, TSource5)> Zip<[System.Runtime.CompilerServices.Nullable(2)] TSource1, [System.Runtime.CompilerServices.Nullable(2)] TSource2, [System.Runtime.CompilerServices.Nullable(2)] TSource3, [System.Runtime.CompilerServices.Nullable(2)] TSource4, [System.Runtime.CompilerServices.Nullable(2)] TSource5>(IObservable<TSource1> source1, IObservable<TSource2> source2, IObservable<TSource3> source3, IObservable<TSource4> source4, IObservable<TSource5> source5)
{
return new Zip<TSource1, TSource2, TSource3, TSource4, TSource5, (TSource1, TSource2, TSource3, TSource4, TSource5)>(source1, source2, source3, source4, source5, (Func<TSource1, TSource2, TSource3, TSource4, TSource5, (TSource1, TSource2, TSource3, TSource4, TSource5)>)((TSource1 t1, TSource2 t2, TSource3 t3, TSource4 t4, TSource5 t5) => (t1, t2, t3, t4, t5)));
}
[return: System.Runtime.CompilerServices.Nullable(new byte[] {
1,
0,
1,
1,
1,
1,
1,
1
})]
public virtual IObservable<(TSource1, TSource2, TSource3, TSource4, TSource5, TSource6)> Zip<[System.Runtime.CompilerServices.Nullable(2)] TSource1, [System.Runtime.CompilerServices.Nullable(2)] TSource2, [System.Runtime.CompilerServices.Nullable(2)] TSource3, [System.Runtime.CompilerServices.Nullable(2)] TSource4, [System.Runtime.CompilerServices.Nullable(2)] TSource5, [System.Runtime.CompilerServices.Nullable(2)] TSource6>(IObservable<TSource1> source1, IObservable<TSource2> source2, IObservable<TSource3> source3, IObservable<TSource4> source4, IObservable<TSource5> source5, IObservable<TSource6> source6)
{
return new Zip<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, (TSource1, TSource2, TSource3, TSource4, TSource5, TSource6)>(source1, source2, source3, source4, source5, source6, (Func<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, (TSource1, TSource2, TSource3, TSource4, TSource5, TSource6)>)((TSource1 t1, TSource2 t2, TSource3 t3, TSource4 t4, TSource5 t5, TSource6 t6) => (t1, t2, t3, t4, t5, t6)));
}
[return: System.Runtime.CompilerServices.Nullable(new byte[] {
1,
0,
1,
1,
1,
1,
1,
1,
1
})]
public virtual IObservable<(TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7)> Zip<[System.Runtime.CompilerServices.Nullable(2)] TSource1, [System.Runtime.CompilerServices.Nullable(2)] TSource2, [System.Runtime.CompilerServices.Nullable(2)] TSource3, [System.Runtime.CompilerServices.Nullable(2)] TSource4, [System.Runtime.CompilerServices.Nullable(2)] TSource5, [System.Runtime.CompilerServices.Nullable(2)] TSource6, [System.Runtime.CompilerServices.Nullable(2)] TSource7>(IObservable<TSource1> source1, IObservable<TSource2> source2, IObservable<TSource3> source3, IObservable<TSource4> source4, IObservable<TSource5> source5, IObservable<TSource6> source6, IObservable<TSource7> source7)
{
return new Zip<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, (TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7)>(source1, source2, source3, source4, source5, source6, source7, (Func<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, (TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7)>)((TSource1 t1, TSource2 t2, TSource3 t3, TSource4 t4, TSource5 t5, TSource6 t6, TSource7 t7) => (t1, t2, t3, t4, t5, t6, t7)));
}
[return: System.Runtime.CompilerServices.Nullable(new byte[] {
1,
0,
1,
1,
1,
1,
1,
1,
1,
0,
1
})]
public virtual IObservable<(TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8)> Zip<[System.Runtime.CompilerServices.Nullable(2)] TSource1, [System.Runtime.CompilerServices.Nullable(2)] TSource2, [System.Runtime.CompilerServices.Nullable(2)] TSource3, [System.Runtime.CompilerServices.Nullable(2)] TSource4, [System.Runtime.CompilerServices.Nullable(2)] TSource5, [System.Runtime.CompilerServices.Nullable(2)] TSource6, [System.Runtime.CompilerServices.Nullable(2)] TSource7, [System.Runtime.CompilerServices.Nullable(2)] TSource8>(IObservable<TSource1> source1, IObservable<TSource2> source2, IObservable<TSource3> source3, IObservable<TSource4> source4, IObservable<TSource5> source5, IObservable<TSource6> source6, IObservable<TSource7> source7, IObservable<TSource8> source8)
{
return new Zip<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, (TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8)>(source1, source2, source3, source4, source5, source6, source7, source8, (Func<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, (TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8)>)((TSource1 t1, TSource2 t2, TSource3 t3, TSource4 t4, TSource5 t5, TSource6 t6, TSource7 t7, TSource8 t8) => (t1, t2, t3, t4, t5, t6, t7, t8)));
}
public virtual IObservable<TResult> Create<[System.Runtime.CompilerServices.Nullable(2)] TResult>(Func<IObserver<TResult>, IEnumerable<IObservable<object>>> iteratorMethod)
{
return new CreateWithEnumerableObservable<TResult>(iteratorMethod);
}
public virtual IObservable<Unit> Create(Func<IEnumerable<IObservable<object>>> iteratorMethod)
{
return new CreateWithOnlyEnumerableObservable<Unit>(iteratorMethod);
}
public virtual IObservable<TSource> Expand<[System.Runtime.CompilerServices.Nullable(2)] TSource>(IObservable<TSource> source, Func<TSource, IObservable<TSource>> selector, IScheduler scheduler)
{
return new ExpandObservable<TSource>(source, selector, scheduler);
}
public virtual IObservable<TSource> Expand<[System.Runtime.CompilerServices.Nullable(2)] TSource>(IObservable<TSource> source, Func<TSource, IObservable<TSource>> selector)
{
return source.Expand(selector, SchedulerDefaults.Iteration);
}
public virtual IObservable<TResult> ForkJoin<[System.Runtime.CompilerServices.Nullable(2)] TFirst, [System.Runtime.CompilerServices.Nullable(2)] TSecond, [System.Runtime.CompilerServices.Nullable(2)] TResult>(IObservable<TFirst> first, IObservable<TSecond> second, Func<TFirst, TSecond, TResult> resultSelector)
{
return Combine(first, second, delegate(IObserver<TResult> observer, IDisposable leftSubscription, IDisposable rightSubscription) {
bool leftStopped = false;
bool rightStopped = false;
bool hasLeft = false;
bool hasRight = false;
TFirst lastLeft = (TFirst)default(TFirst);
TSecond lastRight = (TSecond)default(TSecond);
return new BinaryObserver<TFirst, TSecond>((Action<Notification<TFirst>>)delegate(Notification<TFirst> left) {
switch (left.Kind) {
case NotificationKind.OnNext:
hasLeft = true;
lastLeft = (TFirst)left.Value;
break;
case NotificationKind.OnError:
rightSubscription.Dispose();
observer.OnError(left.Exception);
break;
case NotificationKind.OnCompleted:
leftStopped = true;
if (rightStopped) {
if (!hasLeft)
observer.OnCompleted();
else if (!hasRight) {
observer.OnCompleted();
} else {
TResult value2;
try {
value2 = resultSelector((TFirst)lastLeft, (TSecond)lastRight);
} catch (Exception error2) {
observer.OnError(error2);
return;
}
observer.OnNext(value2);
observer.OnCompleted();
}
}
break;
}
}, (Action<Notification<TSecond>>)delegate(Notification<TSecond> right) {
switch (right.Kind) {
case NotificationKind.OnNext:
hasRight = true;
lastRight = (TSecond)right.Value;
break;
case NotificationKind.OnError:
leftSubscription.Dispose();
observer.OnError(right.Exception);
break;
case NotificationKind.OnCompleted:
rightStopped = true;
if (leftStopped) {
if (!hasLeft)
observer.OnCompleted();
else if (!hasRight) {
observer.OnCompleted();
} else {
TResult value;
try {
value = resultSelector((TFirst)lastLeft, (TSecond)lastRight);
} catch (Exception error) {
observer.OnError(error);
return;
}
observer.OnNext(value);
observer.OnCompleted();
}
}
break;
}
});
});
}
public virtual IObservable<TSource[]> ForkJoin<[System.Runtime.CompilerServices.Nullable(2)] TSource>(params IObservable<TSource>[] sources)
{
return ((IEnumerable<IObservable<TSource>>)sources).ForkJoin();
}
public virtual IObservable<TSource[]> ForkJoin<[System.Runtime.CompilerServices.Nullable(2)] TSource>(IEnumerable<IObservable<TSource>> sources)
{
return new ForkJoinObservable<TSource>(sources);
}
public virtual IObservable<TResult> Let<[System.Runtime.CompilerServices.Nullable(2)] TSource, [System.Runtime.CompilerServices.Nullable(2)] TResult>(IObservable<TSource> source, Func<IObservable<TSource>, IObservable<TResult>> function)
{
return function(source);
}
public virtual IObservable<TResult> ManySelect<[System.Runtime.CompilerServices.Nullable(2)] TSource, [System.Runtime.CompilerServices.Nullable(2)] TResult>(IObservable<TSource> source, Func<IObservable<TSource>, TResult> selector)
{
return ManySelect(source, selector, DefaultScheduler.Instance);
}
public virtual IObservable<TResult> ManySelect<[System.Runtime.CompilerServices.Nullable(2)] TSource, [System.Runtime.CompilerServices.Nullable(2)] TResult>(IObservable<TSource> source, Func<IObservable<TSource>, TResult> selector, IScheduler scheduler)
{
return Observable.Defer(delegate {
ChainObservable<TSource> chain = null;
return Observable.Select<IObservable<TSource>, TResult>(Observable.ObserveOn<IObservable<TSource>>(Observable.Do<IObservable<TSource>>(Observable.Select<TSource, IObservable<TSource>>(source, (Func<TSource, IObservable<TSource>>)delegate(TSource x) {
ChainObservable<TSource> chainObservable = new ChainObservable<TSource>(x);
((ChainObservable<TSource>)chain)?.OnNext((IObservable<TSource>)chainObservable);
chain = (ChainObservable<TSource>)chainObservable;
return chainObservable;
}), (Action<IObservable<TSource>>)delegate {
}, (Action<Exception>)delegate(Exception exception) {
((ChainObservable<TSource>)chain)?.OnError(exception);
}, (Action)delegate {
((ChainObservable<TSource>)chain)?.OnCompleted();
}), scheduler), selector);
});
}
public virtual ListObservable<TSource> ToListObservable<[System.Runtime.CompilerServices.Nullable(2)] TSource>(IObservable<TSource> source)
{
return new ListObservable<TSource>(source);
}
[return: System.Runtime.CompilerServices.Nullable(new byte[] {
1,
0,
1,
1
})]
public virtual IObservable<(TFirst First, TSecond Second)> WithLatestFrom<[System.Runtime.CompilerServices.Nullable(2)] TFirst, [System.Runtime.CompilerServices.Nullable(2)] TSecond>(IObservable<TFirst> first, IObservable<TSecond> second)
{
return new WithLatestFrom<TFirst, TSecond, (TFirst, TSecond)>(first, second, (Func<TFirst, TSecond, (TFirst, TSecond)>)((TFirst t1, TSecond t2) => (t1, t2)));
}
[return: System.Runtime.CompilerServices.Nullable(new byte[] {
1,
0,
1,
1
})]
public virtual IObservable<(TFirst First, TSecond Second)> Zip<[System.Runtime.CompilerServices.Nullable(2)] TFirst, [System.Runtime.CompilerServices.Nullable(2)] TSecond>(IObservable<TFirst> first, IEnumerable<TSecond> second)
{
return new Zip<TFirst, TSecond, (TFirst, TSecond)>.Enumerable(first, second, (Func<TFirst, TSecond, (TFirst, TSecond)>)((TFirst t1, TSecond t2) => (t1, t2)));
}
private static IObservable<TResult> Combine<[System.Runtime.CompilerServices.Nullable(2)] TLeft, [System.Runtime.CompilerServices.Nullable(2)] TRight, [System.Runtime.CompilerServices.Nullable(2)] TResult>(IObservable<TLeft> leftSource, IObservable<TRight> rightSource, Func<IObserver<TResult>, IDisposable, IDisposable, IObserver<Either<Notification<TLeft>, Notification<TRight>>>> combinerSelector)
{
return new CombineObservable<TLeft, TRight, TResult>(leftSource, rightSource, combinerSelector);
}
}
}