// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT License. // See the LICENSE file in the project root for more information. using System.Reactive.Disposables; namespace System.Reactive.Linq.ObservableImpl { #region [3,16]-ary /* The following code is generated by a T4 template. */ #region Zip auto-generated code (10/2/2020 12:26:57 PM) internal sealed class Zip : Producer._> { private readonly IObservable _source1; private readonly IObservable _source2; private readonly IObservable _source3; private readonly Func _resultSelector; public Zip(IObservable source1, IObservable source2, IObservable source3, Func resultSelector) { _source1 = source1; _source2 = source2; _source3 = source3; _resultSelector = resultSelector; } protected override _ CreateSink(IObserver observer) => new(_resultSelector, observer); protected override void Run(_ sink) => sink.Run(_source1, _source2, _source3); internal sealed class _ : ZipSink { private readonly Func _resultSelector; private readonly ZipObserver _observer1; private readonly ZipObserver _observer2; private readonly ZipObserver _observer3; public _(Func resultSelector, IObserver observer) : base(3, observer) { _resultSelector = resultSelector; _observer1 = new ZipObserver(_gate, this, 0); _observer2 = new ZipObserver(_gate, this, 1); _observer3 = new ZipObserver(_gate, this, 2); } public void Run(IObservable source1, IObservable source2, IObservable source3) { var disposables = new IDisposable[3]; disposables[0] = _observer1; Queues[0] = _observer1.Values; disposables[1] = _observer2; Queues[1] = _observer2.Values; disposables[2] = _observer3; Queues[2] = _observer3.Values; _observer1.SetResource(source1.SubscribeSafe(_observer1)); _observer2.SetResource(source2.SubscribeSafe(_observer2)); _observer3.SetResource(source3.SubscribeSafe(_observer3)); SetUpstream(StableCompositeDisposable.CreateTrusted(disposables)); } protected override TResult GetResult() => _resultSelector(_observer1.Values.Dequeue(), _observer2.Values.Dequeue(), _observer3.Values.Dequeue()); } } internal sealed class Zip : Producer._> { private readonly IObservable _source1; private readonly IObservable _source2; private readonly IObservable _source3; private readonly IObservable _source4; private readonly Func _resultSelector; public Zip(IObservable source1, IObservable source2, IObservable source3, IObservable source4, Func resultSelector) { _source1 = source1; _source2 = source2; _source3 = source3; _source4 = source4; _resultSelector = resultSelector; } protected override _ CreateSink(IObserver observer) => new(_resultSelector, observer); protected override void Run(_ sink) => sink.Run(_source1, _source2, _source3, _source4); internal sealed class _ : ZipSink { private readonly Func _resultSelector; private readonly ZipObserver _observer1; private readonly ZipObserver _observer2; private readonly ZipObserver _observer3; private readonly ZipObserver _observer4; public _(Func resultSelector, IObserver observer) : base(4, observer) { _resultSelector = resultSelector; _observer1 = new ZipObserver(_gate, this, 0); _observer2 = new ZipObserver(_gate, this, 1); _observer3 = new ZipObserver(_gate, this, 2); _observer4 = new ZipObserver(_gate, this, 3); } public void Run(IObservable source1, IObservable source2, IObservable source3, IObservable source4) { var disposables = new IDisposable[4]; disposables[0] = _observer1; Queues[0] = _observer1.Values; disposables[1] = _observer2; Queues[1] = _observer2.Values; disposables[2] = _observer3; Queues[2] = _observer3.Values; disposables[3] = _observer4; Queues[3] = _observer4.Values; _observer1.SetResource(source1.SubscribeSafe(_observer1)); _observer2.SetResource(source2.SubscribeSafe(_observer2)); _observer3.SetResource(source3.SubscribeSafe(_observer3)); _observer4.SetResource(source4.SubscribeSafe(_observer4)); SetUpstream(StableCompositeDisposable.CreateTrusted(disposables)); } protected override TResult GetResult() => _resultSelector(_observer1.Values.Dequeue(), _observer2.Values.Dequeue(), _observer3.Values.Dequeue(), _observer4.Values.Dequeue()); } } internal sealed class Zip : Producer._> { private readonly IObservable _source1; private readonly IObservable _source2; private readonly IObservable _source3; private readonly IObservable _source4; private readonly IObservable _source5; private readonly Func _resultSelector; public Zip(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, Func resultSelector) { _source1 = source1; _source2 = source2; _source3 = source3; _source4 = source4; _source5 = source5; _resultSelector = resultSelector; } protected override _ CreateSink(IObserver observer) => new(_resultSelector, observer); protected override void Run(_ sink) => sink.Run(_source1, _source2, _source3, _source4, _source5); internal sealed class _ : ZipSink { private readonly Func _resultSelector; private readonly ZipObserver _observer1; private readonly ZipObserver _observer2; private readonly ZipObserver _observer3; private readonly ZipObserver _observer4; private readonly ZipObserver _observer5; public _(Func resultSelector, IObserver observer) : base(5, observer) { _resultSelector = resultSelector; _observer1 = new ZipObserver(_gate, this, 0); _observer2 = new ZipObserver(_gate, this, 1); _observer3 = new ZipObserver(_gate, this, 2); _observer4 = new ZipObserver(_gate, this, 3); _observer5 = new ZipObserver(_gate, this, 4); } public void Run(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5) { var disposables = new IDisposable[5]; disposables[0] = _observer1; Queues[0] = _observer1.Values; disposables[1] = _observer2; Queues[1] = _observer2.Values; disposables[2] = _observer3; Queues[2] = _observer3.Values; disposables[3] = _observer4; Queues[3] = _observer4.Values; disposables[4] = _observer5; Queues[4] = _observer5.Values; _observer1.SetResource(source1.SubscribeSafe(_observer1)); _observer2.SetResource(source2.SubscribeSafe(_observer2)); _observer3.SetResource(source3.SubscribeSafe(_observer3)); _observer4.SetResource(source4.SubscribeSafe(_observer4)); _observer5.SetResource(source5.SubscribeSafe(_observer5)); SetUpstream(StableCompositeDisposable.CreateTrusted(disposables)); } protected override TResult GetResult() => _resultSelector(_observer1.Values.Dequeue(), _observer2.Values.Dequeue(), _observer3.Values.Dequeue(), _observer4.Values.Dequeue(), _observer5.Values.Dequeue()); } } internal sealed class Zip : Producer._> { private readonly IObservable _source1; private readonly IObservable _source2; private readonly IObservable _source3; private readonly IObservable _source4; private readonly IObservable _source5; private readonly IObservable _source6; private readonly Func _resultSelector; public Zip(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, Func resultSelector) { _source1 = source1; _source2 = source2; _source3 = source3; _source4 = source4; _source5 = source5; _source6 = source6; _resultSelector = resultSelector; } protected override _ CreateSink(IObserver observer) => new(_resultSelector, observer); protected override void Run(_ sink) => sink.Run(_source1, _source2, _source3, _source4, _source5, _source6); internal sealed class _ : ZipSink { private readonly Func _resultSelector; private readonly ZipObserver _observer1; private readonly ZipObserver _observer2; private readonly ZipObserver _observer3; private readonly ZipObserver _observer4; private readonly ZipObserver _observer5; private readonly ZipObserver _observer6; public _(Func resultSelector, IObserver observer) : base(6, observer) { _resultSelector = resultSelector; _observer1 = new ZipObserver(_gate, this, 0); _observer2 = new ZipObserver(_gate, this, 1); _observer3 = new ZipObserver(_gate, this, 2); _observer4 = new ZipObserver(_gate, this, 3); _observer5 = new ZipObserver(_gate, this, 4); _observer6 = new ZipObserver(_gate, this, 5); } public void Run(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6) { var disposables = new IDisposable[6]; disposables[0] = _observer1; Queues[0] = _observer1.Values; disposables[1] = _observer2; Queues[1] = _observer2.Values; disposables[2] = _observer3; Queues[2] = _observer3.Values; disposables[3] = _observer4; Queues[3] = _observer4.Values; disposables[4] = _observer5; Queues[4] = _observer5.Values; disposables[5] = _observer6; Queues[5] = _observer6.Values; _observer1.SetResource(source1.SubscribeSafe(_observer1)); _observer2.SetResource(source2.SubscribeSafe(_observer2)); _observer3.SetResource(source3.SubscribeSafe(_observer3)); _observer4.SetResource(source4.SubscribeSafe(_observer4)); _observer5.SetResource(source5.SubscribeSafe(_observer5)); _observer6.SetResource(source6.SubscribeSafe(_observer6)); SetUpstream(StableCompositeDisposable.CreateTrusted(disposables)); } protected override TResult GetResult() => _resultSelector(_observer1.Values.Dequeue(), _observer2.Values.Dequeue(), _observer3.Values.Dequeue(), _observer4.Values.Dequeue(), _observer5.Values.Dequeue(), _observer6.Values.Dequeue()); } } internal sealed class Zip : Producer._> { private readonly IObservable _source1; private readonly IObservable _source2; private readonly IObservable _source3; private readonly IObservable _source4; private readonly IObservable _source5; private readonly IObservable _source6; private readonly IObservable _source7; private readonly Func _resultSelector; public Zip(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, Func resultSelector) { _source1 = source1; _source2 = source2; _source3 = source3; _source4 = source4; _source5 = source5; _source6 = source6; _source7 = source7; _resultSelector = resultSelector; } protected override _ CreateSink(IObserver observer) => new(_resultSelector, observer); protected override void Run(_ sink) => sink.Run(_source1, _source2, _source3, _source4, _source5, _source6, _source7); internal sealed class _ : ZipSink { private readonly Func _resultSelector; private readonly ZipObserver _observer1; private readonly ZipObserver _observer2; private readonly ZipObserver _observer3; private readonly ZipObserver _observer4; private readonly ZipObserver _observer5; private readonly ZipObserver _observer6; private readonly ZipObserver _observer7; public _(Func resultSelector, IObserver observer) : base(7, observer) { _resultSelector = resultSelector; _observer1 = new ZipObserver(_gate, this, 0); _observer2 = new ZipObserver(_gate, this, 1); _observer3 = new ZipObserver(_gate, this, 2); _observer4 = new ZipObserver(_gate, this, 3); _observer5 = new ZipObserver(_gate, this, 4); _observer6 = new ZipObserver(_gate, this, 5); _observer7 = new ZipObserver(_gate, this, 6); } public void Run(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7) { var disposables = new IDisposable[7]; disposables[0] = _observer1; Queues[0] = _observer1.Values; disposables[1] = _observer2; Queues[1] = _observer2.Values; disposables[2] = _observer3; Queues[2] = _observer3.Values; disposables[3] = _observer4; Queues[3] = _observer4.Values; disposables[4] = _observer5; Queues[4] = _observer5.Values; disposables[5] = _observer6; Queues[5] = _observer6.Values; disposables[6] = _observer7; Queues[6] = _observer7.Values; _observer1.SetResource(source1.SubscribeSafe(_observer1)); _observer2.SetResource(source2.SubscribeSafe(_observer2)); _observer3.SetResource(source3.SubscribeSafe(_observer3)); _observer4.SetResource(source4.SubscribeSafe(_observer4)); _observer5.SetResource(source5.SubscribeSafe(_observer5)); _observer6.SetResource(source6.SubscribeSafe(_observer6)); _observer7.SetResource(source7.SubscribeSafe(_observer7)); SetUpstream(StableCompositeDisposable.CreateTrusted(disposables)); } protected override TResult GetResult() => _resultSelector(_observer1.Values.Dequeue(), _observer2.Values.Dequeue(), _observer3.Values.Dequeue(), _observer4.Values.Dequeue(), _observer5.Values.Dequeue(), _observer6.Values.Dequeue(), _observer7.Values.Dequeue()); } } internal sealed class Zip : Producer._> { private readonly IObservable _source1; private readonly IObservable _source2; private readonly IObservable _source3; private readonly IObservable _source4; private readonly IObservable _source5; private readonly IObservable _source6; private readonly IObservable _source7; private readonly IObservable _source8; private readonly Func _resultSelector; public Zip(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, Func resultSelector) { _source1 = source1; _source2 = source2; _source3 = source3; _source4 = source4; _source5 = source5; _source6 = source6; _source7 = source7; _source8 = source8; _resultSelector = resultSelector; } protected override _ CreateSink(IObserver observer) => new(_resultSelector, observer); protected override void Run(_ sink) => sink.Run(_source1, _source2, _source3, _source4, _source5, _source6, _source7, _source8); internal sealed class _ : ZipSink { private readonly Func _resultSelector; private readonly ZipObserver _observer1; private readonly ZipObserver _observer2; private readonly ZipObserver _observer3; private readonly ZipObserver _observer4; private readonly ZipObserver _observer5; private readonly ZipObserver _observer6; private readonly ZipObserver _observer7; private readonly ZipObserver _observer8; public _(Func resultSelector, IObserver observer) : base(8, observer) { _resultSelector = resultSelector; _observer1 = new ZipObserver(_gate, this, 0); _observer2 = new ZipObserver(_gate, this, 1); _observer3 = new ZipObserver(_gate, this, 2); _observer4 = new ZipObserver(_gate, this, 3); _observer5 = new ZipObserver(_gate, this, 4); _observer6 = new ZipObserver(_gate, this, 5); _observer7 = new ZipObserver(_gate, this, 6); _observer8 = new ZipObserver(_gate, this, 7); } public void Run(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8) { var disposables = new IDisposable[8]; disposables[0] = _observer1; Queues[0] = _observer1.Values; disposables[1] = _observer2; Queues[1] = _observer2.Values; disposables[2] = _observer3; Queues[2] = _observer3.Values; disposables[3] = _observer4; Queues[3] = _observer4.Values; disposables[4] = _observer5; Queues[4] = _observer5.Values; disposables[5] = _observer6; Queues[5] = _observer6.Values; disposables[6] = _observer7; Queues[6] = _observer7.Values; disposables[7] = _observer8; Queues[7] = _observer8.Values; _observer1.SetResource(source1.SubscribeSafe(_observer1)); _observer2.SetResource(source2.SubscribeSafe(_observer2)); _observer3.SetResource(source3.SubscribeSafe(_observer3)); _observer4.SetResource(source4.SubscribeSafe(_observer4)); _observer5.SetResource(source5.SubscribeSafe(_observer5)); _observer6.SetResource(source6.SubscribeSafe(_observer6)); _observer7.SetResource(source7.SubscribeSafe(_observer7)); _observer8.SetResource(source8.SubscribeSafe(_observer8)); SetUpstream(StableCompositeDisposable.CreateTrusted(disposables)); } protected override TResult GetResult() => _resultSelector(_observer1.Values.Dequeue(), _observer2.Values.Dequeue(), _observer3.Values.Dequeue(), _observer4.Values.Dequeue(), _observer5.Values.Dequeue(), _observer6.Values.Dequeue(), _observer7.Values.Dequeue(), _observer8.Values.Dequeue()); } } internal sealed class Zip : Producer._> { private readonly IObservable _source1; private readonly IObservable _source2; private readonly IObservable _source3; private readonly IObservable _source4; private readonly IObservable _source5; private readonly IObservable _source6; private readonly IObservable _source7; private readonly IObservable _source8; private readonly IObservable _source9; private readonly Func _resultSelector; public Zip(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, Func resultSelector) { _source1 = source1; _source2 = source2; _source3 = source3; _source4 = source4; _source5 = source5; _source6 = source6; _source7 = source7; _source8 = source8; _source9 = source9; _resultSelector = resultSelector; } protected override _ CreateSink(IObserver observer) => new(_resultSelector, observer); protected override void Run(_ sink) => sink.Run(_source1, _source2, _source3, _source4, _source5, _source6, _source7, _source8, _source9); internal sealed class _ : ZipSink { private readonly Func _resultSelector; private readonly ZipObserver _observer1; private readonly ZipObserver _observer2; private readonly ZipObserver _observer3; private readonly ZipObserver _observer4; private readonly ZipObserver _observer5; private readonly ZipObserver _observer6; private readonly ZipObserver _observer7; private readonly ZipObserver _observer8; private readonly ZipObserver _observer9; public _(Func resultSelector, IObserver observer) : base(9, observer) { _resultSelector = resultSelector; _observer1 = new ZipObserver(_gate, this, 0); _observer2 = new ZipObserver(_gate, this, 1); _observer3 = new ZipObserver(_gate, this, 2); _observer4 = new ZipObserver(_gate, this, 3); _observer5 = new ZipObserver(_gate, this, 4); _observer6 = new ZipObserver(_gate, this, 5); _observer7 = new ZipObserver(_gate, this, 6); _observer8 = new ZipObserver(_gate, this, 7); _observer9 = new ZipObserver(_gate, this, 8); } public void Run(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9) { var disposables = new IDisposable[9]; disposables[0] = _observer1; Queues[0] = _observer1.Values; disposables[1] = _observer2; Queues[1] = _observer2.Values; disposables[2] = _observer3; Queues[2] = _observer3.Values; disposables[3] = _observer4; Queues[3] = _observer4.Values; disposables[4] = _observer5; Queues[4] = _observer5.Values; disposables[5] = _observer6; Queues[5] = _observer6.Values; disposables[6] = _observer7; Queues[6] = _observer7.Values; disposables[7] = _observer8; Queues[7] = _observer8.Values; disposables[8] = _observer9; Queues[8] = _observer9.Values; _observer1.SetResource(source1.SubscribeSafe(_observer1)); _observer2.SetResource(source2.SubscribeSafe(_observer2)); _observer3.SetResource(source3.SubscribeSafe(_observer3)); _observer4.SetResource(source4.SubscribeSafe(_observer4)); _observer5.SetResource(source5.SubscribeSafe(_observer5)); _observer6.SetResource(source6.SubscribeSafe(_observer6)); _observer7.SetResource(source7.SubscribeSafe(_observer7)); _observer8.SetResource(source8.SubscribeSafe(_observer8)); _observer9.SetResource(source9.SubscribeSafe(_observer9)); SetUpstream(StableCompositeDisposable.CreateTrusted(disposables)); } protected override TResult GetResult() => _resultSelector(_observer1.Values.Dequeue(), _observer2.Values.Dequeue(), _observer3.Values.Dequeue(), _observer4.Values.Dequeue(), _observer5.Values.Dequeue(), _observer6.Values.Dequeue(), _observer7.Values.Dequeue(), _observer8.Values.Dequeue(), _observer9.Values.Dequeue()); } } internal sealed class Zip : Producer._> { private readonly IObservable _source1; private readonly IObservable _source2; private readonly IObservable _source3; private readonly IObservable _source4; private readonly IObservable _source5; private readonly IObservable _source6; private readonly IObservable _source7; private readonly IObservable _source8; private readonly IObservable _source9; private readonly IObservable _source10; private readonly Func _resultSelector; public Zip(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, Func resultSelector) { _source1 = source1; _source2 = source2; _source3 = source3; _source4 = source4; _source5 = source5; _source6 = source6; _source7 = source7; _source8 = source8; _source9 = source9; _source10 = source10; _resultSelector = resultSelector; } protected override _ CreateSink(IObserver observer) => new(_resultSelector, observer); protected override void Run(_ sink) => sink.Run(_source1, _source2, _source3, _source4, _source5, _source6, _source7, _source8, _source9, _source10); internal sealed class _ : ZipSink { private readonly Func _resultSelector; private readonly ZipObserver _observer1; private readonly ZipObserver _observer2; private readonly ZipObserver _observer3; private readonly ZipObserver _observer4; private readonly ZipObserver _observer5; private readonly ZipObserver _observer6; private readonly ZipObserver _observer7; private readonly ZipObserver _observer8; private readonly ZipObserver _observer9; private readonly ZipObserver _observer10; public _(Func resultSelector, IObserver observer) : base(10, observer) { _resultSelector = resultSelector; _observer1 = new ZipObserver(_gate, this, 0); _observer2 = new ZipObserver(_gate, this, 1); _observer3 = new ZipObserver(_gate, this, 2); _observer4 = new ZipObserver(_gate, this, 3); _observer5 = new ZipObserver(_gate, this, 4); _observer6 = new ZipObserver(_gate, this, 5); _observer7 = new ZipObserver(_gate, this, 6); _observer8 = new ZipObserver(_gate, this, 7); _observer9 = new ZipObserver(_gate, this, 8); _observer10 = new ZipObserver(_gate, this, 9); } public void Run(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10) { var disposables = new IDisposable[10]; disposables[0] = _observer1; Queues[0] = _observer1.Values; disposables[1] = _observer2; Queues[1] = _observer2.Values; disposables[2] = _observer3; Queues[2] = _observer3.Values; disposables[3] = _observer4; Queues[3] = _observer4.Values; disposables[4] = _observer5; Queues[4] = _observer5.Values; disposables[5] = _observer6; Queues[5] = _observer6.Values; disposables[6] = _observer7; Queues[6] = _observer7.Values; disposables[7] = _observer8; Queues[7] = _observer8.Values; disposables[8] = _observer9; Queues[8] = _observer9.Values; disposables[9] = _observer10; Queues[9] = _observer10.Values; _observer1.SetResource(source1.SubscribeSafe(_observer1)); _observer2.SetResource(source2.SubscribeSafe(_observer2)); _observer3.SetResource(source3.SubscribeSafe(_observer3)); _observer4.SetResource(source4.SubscribeSafe(_observer4)); _observer5.SetResource(source5.SubscribeSafe(_observer5)); _observer6.SetResource(source6.SubscribeSafe(_observer6)); _observer7.SetResource(source7.SubscribeSafe(_observer7)); _observer8.SetResource(source8.SubscribeSafe(_observer8)); _observer9.SetResource(source9.SubscribeSafe(_observer9)); _observer10.SetResource(source10.SubscribeSafe(_observer10)); SetUpstream(StableCompositeDisposable.CreateTrusted(disposables)); } protected override TResult GetResult() => _resultSelector(_observer1.Values.Dequeue(), _observer2.Values.Dequeue(), _observer3.Values.Dequeue(), _observer4.Values.Dequeue(), _observer5.Values.Dequeue(), _observer6.Values.Dequeue(), _observer7.Values.Dequeue(), _observer8.Values.Dequeue(), _observer9.Values.Dequeue(), _observer10.Values.Dequeue()); } } internal sealed class Zip : Producer._> { private readonly IObservable _source1; private readonly IObservable _source2; private readonly IObservable _source3; private readonly IObservable _source4; private readonly IObservable _source5; private readonly IObservable _source6; private readonly IObservable _source7; private readonly IObservable _source8; private readonly IObservable _source9; private readonly IObservable _source10; private readonly IObservable _source11; private readonly Func _resultSelector; public Zip(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, IObservable source11, Func resultSelector) { _source1 = source1; _source2 = source2; _source3 = source3; _source4 = source4; _source5 = source5; _source6 = source6; _source7 = source7; _source8 = source8; _source9 = source9; _source10 = source10; _source11 = source11; _resultSelector = resultSelector; } protected override _ CreateSink(IObserver observer) => new(_resultSelector, observer); protected override void Run(_ sink) => sink.Run(_source1, _source2, _source3, _source4, _source5, _source6, _source7, _source8, _source9, _source10, _source11); internal sealed class _ : ZipSink { private readonly Func _resultSelector; private readonly ZipObserver _observer1; private readonly ZipObserver _observer2; private readonly ZipObserver _observer3; private readonly ZipObserver _observer4; private readonly ZipObserver _observer5; private readonly ZipObserver _observer6; private readonly ZipObserver _observer7; private readonly ZipObserver _observer8; private readonly ZipObserver _observer9; private readonly ZipObserver _observer10; private readonly ZipObserver _observer11; public _(Func resultSelector, IObserver observer) : base(11, observer) { _resultSelector = resultSelector; _observer1 = new ZipObserver(_gate, this, 0); _observer2 = new ZipObserver(_gate, this, 1); _observer3 = new ZipObserver(_gate, this, 2); _observer4 = new ZipObserver(_gate, this, 3); _observer5 = new ZipObserver(_gate, this, 4); _observer6 = new ZipObserver(_gate, this, 5); _observer7 = new ZipObserver(_gate, this, 6); _observer8 = new ZipObserver(_gate, this, 7); _observer9 = new ZipObserver(_gate, this, 8); _observer10 = new ZipObserver(_gate, this, 9); _observer11 = new ZipObserver(_gate, this, 10); } public void Run(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, IObservable source11) { var disposables = new IDisposable[11]; disposables[0] = _observer1; Queues[0] = _observer1.Values; disposables[1] = _observer2; Queues[1] = _observer2.Values; disposables[2] = _observer3; Queues[2] = _observer3.Values; disposables[3] = _observer4; Queues[3] = _observer4.Values; disposables[4] = _observer5; Queues[4] = _observer5.Values; disposables[5] = _observer6; Queues[5] = _observer6.Values; disposables[6] = _observer7; Queues[6] = _observer7.Values; disposables[7] = _observer8; Queues[7] = _observer8.Values; disposables[8] = _observer9; Queues[8] = _observer9.Values; disposables[9] = _observer10; Queues[9] = _observer10.Values; disposables[10] = _observer11; Queues[10] = _observer11.Values; _observer1.SetResource(source1.SubscribeSafe(_observer1)); _observer2.SetResource(source2.SubscribeSafe(_observer2)); _observer3.SetResource(source3.SubscribeSafe(_observer3)); _observer4.SetResource(source4.SubscribeSafe(_observer4)); _observer5.SetResource(source5.SubscribeSafe(_observer5)); _observer6.SetResource(source6.SubscribeSafe(_observer6)); _observer7.SetResource(source7.SubscribeSafe(_observer7)); _observer8.SetResource(source8.SubscribeSafe(_observer8)); _observer9.SetResource(source9.SubscribeSafe(_observer9)); _observer10.SetResource(source10.SubscribeSafe(_observer10)); _observer11.SetResource(source11.SubscribeSafe(_observer11)); SetUpstream(StableCompositeDisposable.CreateTrusted(disposables)); } protected override TResult GetResult() => _resultSelector(_observer1.Values.Dequeue(), _observer2.Values.Dequeue(), _observer3.Values.Dequeue(), _observer4.Values.Dequeue(), _observer5.Values.Dequeue(), _observer6.Values.Dequeue(), _observer7.Values.Dequeue(), _observer8.Values.Dequeue(), _observer9.Values.Dequeue(), _observer10.Values.Dequeue(), _observer11.Values.Dequeue()); } } internal sealed class Zip : Producer._> { private readonly IObservable _source1; private readonly IObservable _source2; private readonly IObservable _source3; private readonly IObservable _source4; private readonly IObservable _source5; private readonly IObservable _source6; private readonly IObservable _source7; private readonly IObservable _source8; private readonly IObservable _source9; private readonly IObservable _source10; private readonly IObservable _source11; private readonly IObservable _source12; private readonly Func _resultSelector; public Zip(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, IObservable source11, IObservable source12, Func resultSelector) { _source1 = source1; _source2 = source2; _source3 = source3; _source4 = source4; _source5 = source5; _source6 = source6; _source7 = source7; _source8 = source8; _source9 = source9; _source10 = source10; _source11 = source11; _source12 = source12; _resultSelector = resultSelector; } protected override _ CreateSink(IObserver observer) => new(_resultSelector, observer); protected override void Run(_ sink) => sink.Run(_source1, _source2, _source3, _source4, _source5, _source6, _source7, _source8, _source9, _source10, _source11, _source12); internal sealed class _ : ZipSink { private readonly Func _resultSelector; private readonly ZipObserver _observer1; private readonly ZipObserver _observer2; private readonly ZipObserver _observer3; private readonly ZipObserver _observer4; private readonly ZipObserver _observer5; private readonly ZipObserver _observer6; private readonly ZipObserver _observer7; private readonly ZipObserver _observer8; private readonly ZipObserver _observer9; private readonly ZipObserver _observer10; private readonly ZipObserver _observer11; private readonly ZipObserver _observer12; public _(Func resultSelector, IObserver observer) : base(12, observer) { _resultSelector = resultSelector; _observer1 = new ZipObserver(_gate, this, 0); _observer2 = new ZipObserver(_gate, this, 1); _observer3 = new ZipObserver(_gate, this, 2); _observer4 = new ZipObserver(_gate, this, 3); _observer5 = new ZipObserver(_gate, this, 4); _observer6 = new ZipObserver(_gate, this, 5); _observer7 = new ZipObserver(_gate, this, 6); _observer8 = new ZipObserver(_gate, this, 7); _observer9 = new ZipObserver(_gate, this, 8); _observer10 = new ZipObserver(_gate, this, 9); _observer11 = new ZipObserver(_gate, this, 10); _observer12 = new ZipObserver(_gate, this, 11); } public void Run(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, IObservable source11, IObservable source12) { var disposables = new IDisposable[12]; disposables[0] = _observer1; Queues[0] = _observer1.Values; disposables[1] = _observer2; Queues[1] = _observer2.Values; disposables[2] = _observer3; Queues[2] = _observer3.Values; disposables[3] = _observer4; Queues[3] = _observer4.Values; disposables[4] = _observer5; Queues[4] = _observer5.Values; disposables[5] = _observer6; Queues[5] = _observer6.Values; disposables[6] = _observer7; Queues[6] = _observer7.Values; disposables[7] = _observer8; Queues[7] = _observer8.Values; disposables[8] = _observer9; Queues[8] = _observer9.Values; disposables[9] = _observer10; Queues[9] = _observer10.Values; disposables[10] = _observer11; Queues[10] = _observer11.Values; disposables[11] = _observer12; Queues[11] = _observer12.Values; _observer1.SetResource(source1.SubscribeSafe(_observer1)); _observer2.SetResource(source2.SubscribeSafe(_observer2)); _observer3.SetResource(source3.SubscribeSafe(_observer3)); _observer4.SetResource(source4.SubscribeSafe(_observer4)); _observer5.SetResource(source5.SubscribeSafe(_observer5)); _observer6.SetResource(source6.SubscribeSafe(_observer6)); _observer7.SetResource(source7.SubscribeSafe(_observer7)); _observer8.SetResource(source8.SubscribeSafe(_observer8)); _observer9.SetResource(source9.SubscribeSafe(_observer9)); _observer10.SetResource(source10.SubscribeSafe(_observer10)); _observer11.SetResource(source11.SubscribeSafe(_observer11)); _observer12.SetResource(source12.SubscribeSafe(_observer12)); SetUpstream(StableCompositeDisposable.CreateTrusted(disposables)); } protected override TResult GetResult() => _resultSelector(_observer1.Values.Dequeue(), _observer2.Values.Dequeue(), _observer3.Values.Dequeue(), _observer4.Values.Dequeue(), _observer5.Values.Dequeue(), _observer6.Values.Dequeue(), _observer7.Values.Dequeue(), _observer8.Values.Dequeue(), _observer9.Values.Dequeue(), _observer10.Values.Dequeue(), _observer11.Values.Dequeue(), _observer12.Values.Dequeue()); } } internal sealed class Zip : Producer._> { private readonly IObservable _source1; private readonly IObservable _source2; private readonly IObservable _source3; private readonly IObservable _source4; private readonly IObservable _source5; private readonly IObservable _source6; private readonly IObservable _source7; private readonly IObservable _source8; private readonly IObservable _source9; private readonly IObservable _source10; private readonly IObservable _source11; private readonly IObservable _source12; private readonly IObservable _source13; private readonly Func _resultSelector; public Zip(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, IObservable source11, IObservable source12, IObservable source13, Func resultSelector) { _source1 = source1; _source2 = source2; _source3 = source3; _source4 = source4; _source5 = source5; _source6 = source6; _source7 = source7; _source8 = source8; _source9 = source9; _source10 = source10; _source11 = source11; _source12 = source12; _source13 = source13; _resultSelector = resultSelector; } protected override _ CreateSink(IObserver observer) => new(_resultSelector, observer); protected override void Run(_ sink) => sink.Run(_source1, _source2, _source3, _source4, _source5, _source6, _source7, _source8, _source9, _source10, _source11, _source12, _source13); internal sealed class _ : ZipSink { private readonly Func _resultSelector; private readonly ZipObserver _observer1; private readonly ZipObserver _observer2; private readonly ZipObserver _observer3; private readonly ZipObserver _observer4; private readonly ZipObserver _observer5; private readonly ZipObserver _observer6; private readonly ZipObserver _observer7; private readonly ZipObserver _observer8; private readonly ZipObserver _observer9; private readonly ZipObserver _observer10; private readonly ZipObserver _observer11; private readonly ZipObserver _observer12; private readonly ZipObserver _observer13; public _(Func resultSelector, IObserver observer) : base(13, observer) { _resultSelector = resultSelector; _observer1 = new ZipObserver(_gate, this, 0); _observer2 = new ZipObserver(_gate, this, 1); _observer3 = new ZipObserver(_gate, this, 2); _observer4 = new ZipObserver(_gate, this, 3); _observer5 = new ZipObserver(_gate, this, 4); _observer6 = new ZipObserver(_gate, this, 5); _observer7 = new ZipObserver(_gate, this, 6); _observer8 = new ZipObserver(_gate, this, 7); _observer9 = new ZipObserver(_gate, this, 8); _observer10 = new ZipObserver(_gate, this, 9); _observer11 = new ZipObserver(_gate, this, 10); _observer12 = new ZipObserver(_gate, this, 11); _observer13 = new ZipObserver(_gate, this, 12); } public void Run(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, IObservable source11, IObservable source12, IObservable source13) { var disposables = new IDisposable[13]; disposables[0] = _observer1; Queues[0] = _observer1.Values; disposables[1] = _observer2; Queues[1] = _observer2.Values; disposables[2] = _observer3; Queues[2] = _observer3.Values; disposables[3] = _observer4; Queues[3] = _observer4.Values; disposables[4] = _observer5; Queues[4] = _observer5.Values; disposables[5] = _observer6; Queues[5] = _observer6.Values; disposables[6] = _observer7; Queues[6] = _observer7.Values; disposables[7] = _observer8; Queues[7] = _observer8.Values; disposables[8] = _observer9; Queues[8] = _observer9.Values; disposables[9] = _observer10; Queues[9] = _observer10.Values; disposables[10] = _observer11; Queues[10] = _observer11.Values; disposables[11] = _observer12; Queues[11] = _observer12.Values; disposables[12] = _observer13; Queues[12] = _observer13.Values; _observer1.SetResource(source1.SubscribeSafe(_observer1)); _observer2.SetResource(source2.SubscribeSafe(_observer2)); _observer3.SetResource(source3.SubscribeSafe(_observer3)); _observer4.SetResource(source4.SubscribeSafe(_observer4)); _observer5.SetResource(source5.SubscribeSafe(_observer5)); _observer6.SetResource(source6.SubscribeSafe(_observer6)); _observer7.SetResource(source7.SubscribeSafe(_observer7)); _observer8.SetResource(source8.SubscribeSafe(_observer8)); _observer9.SetResource(source9.SubscribeSafe(_observer9)); _observer10.SetResource(source10.SubscribeSafe(_observer10)); _observer11.SetResource(source11.SubscribeSafe(_observer11)); _observer12.SetResource(source12.SubscribeSafe(_observer12)); _observer13.SetResource(source13.SubscribeSafe(_observer13)); SetUpstream(StableCompositeDisposable.CreateTrusted(disposables)); } protected override TResult GetResult() => _resultSelector(_observer1.Values.Dequeue(), _observer2.Values.Dequeue(), _observer3.Values.Dequeue(), _observer4.Values.Dequeue(), _observer5.Values.Dequeue(), _observer6.Values.Dequeue(), _observer7.Values.Dequeue(), _observer8.Values.Dequeue(), _observer9.Values.Dequeue(), _observer10.Values.Dequeue(), _observer11.Values.Dequeue(), _observer12.Values.Dequeue(), _observer13.Values.Dequeue()); } } internal sealed class Zip : Producer._> { private readonly IObservable _source1; private readonly IObservable _source2; private readonly IObservable _source3; private readonly IObservable _source4; private readonly IObservable _source5; private readonly IObservable _source6; private readonly IObservable _source7; private readonly IObservable _source8; private readonly IObservable _source9; private readonly IObservable _source10; private readonly IObservable _source11; private readonly IObservable _source12; private readonly IObservable _source13; private readonly IObservable _source14; private readonly Func _resultSelector; public Zip(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, IObservable source11, IObservable source12, IObservable source13, IObservable source14, Func resultSelector) { _source1 = source1; _source2 = source2; _source3 = source3; _source4 = source4; _source5 = source5; _source6 = source6; _source7 = source7; _source8 = source8; _source9 = source9; _source10 = source10; _source11 = source11; _source12 = source12; _source13 = source13; _source14 = source14; _resultSelector = resultSelector; } protected override _ CreateSink(IObserver observer) => new(_resultSelector, observer); protected override void Run(_ sink) => sink.Run(_source1, _source2, _source3, _source4, _source5, _source6, _source7, _source8, _source9, _source10, _source11, _source12, _source13, _source14); internal sealed class _ : ZipSink { private readonly Func _resultSelector; private readonly ZipObserver _observer1; private readonly ZipObserver _observer2; private readonly ZipObserver _observer3; private readonly ZipObserver _observer4; private readonly ZipObserver _observer5; private readonly ZipObserver _observer6; private readonly ZipObserver _observer7; private readonly ZipObserver _observer8; private readonly ZipObserver _observer9; private readonly ZipObserver _observer10; private readonly ZipObserver _observer11; private readonly ZipObserver _observer12; private readonly ZipObserver _observer13; private readonly ZipObserver _observer14; public _(Func resultSelector, IObserver observer) : base(14, observer) { _resultSelector = resultSelector; _observer1 = new ZipObserver(_gate, this, 0); _observer2 = new ZipObserver(_gate, this, 1); _observer3 = new ZipObserver(_gate, this, 2); _observer4 = new ZipObserver(_gate, this, 3); _observer5 = new ZipObserver(_gate, this, 4); _observer6 = new ZipObserver(_gate, this, 5); _observer7 = new ZipObserver(_gate, this, 6); _observer8 = new ZipObserver(_gate, this, 7); _observer9 = new ZipObserver(_gate, this, 8); _observer10 = new ZipObserver(_gate, this, 9); _observer11 = new ZipObserver(_gate, this, 10); _observer12 = new ZipObserver(_gate, this, 11); _observer13 = new ZipObserver(_gate, this, 12); _observer14 = new ZipObserver(_gate, this, 13); } public void Run(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, IObservable source11, IObservable source12, IObservable source13, IObservable source14) { var disposables = new IDisposable[14]; disposables[0] = _observer1; Queues[0] = _observer1.Values; disposables[1] = _observer2; Queues[1] = _observer2.Values; disposables[2] = _observer3; Queues[2] = _observer3.Values; disposables[3] = _observer4; Queues[3] = _observer4.Values; disposables[4] = _observer5; Queues[4] = _observer5.Values; disposables[5] = _observer6; Queues[5] = _observer6.Values; disposables[6] = _observer7; Queues[6] = _observer7.Values; disposables[7] = _observer8; Queues[7] = _observer8.Values; disposables[8] = _observer9; Queues[8] = _observer9.Values; disposables[9] = _observer10; Queues[9] = _observer10.Values; disposables[10] = _observer11; Queues[10] = _observer11.Values; disposables[11] = _observer12; Queues[11] = _observer12.Values; disposables[12] = _observer13; Queues[12] = _observer13.Values; disposables[13] = _observer14; Queues[13] = _observer14.Values; _observer1.SetResource(source1.SubscribeSafe(_observer1)); _observer2.SetResource(source2.SubscribeSafe(_observer2)); _observer3.SetResource(source3.SubscribeSafe(_observer3)); _observer4.SetResource(source4.SubscribeSafe(_observer4)); _observer5.SetResource(source5.SubscribeSafe(_observer5)); _observer6.SetResource(source6.SubscribeSafe(_observer6)); _observer7.SetResource(source7.SubscribeSafe(_observer7)); _observer8.SetResource(source8.SubscribeSafe(_observer8)); _observer9.SetResource(source9.SubscribeSafe(_observer9)); _observer10.SetResource(source10.SubscribeSafe(_observer10)); _observer11.SetResource(source11.SubscribeSafe(_observer11)); _observer12.SetResource(source12.SubscribeSafe(_observer12)); _observer13.SetResource(source13.SubscribeSafe(_observer13)); _observer14.SetResource(source14.SubscribeSafe(_observer14)); SetUpstream(StableCompositeDisposable.CreateTrusted(disposables)); } protected override TResult GetResult() => _resultSelector(_observer1.Values.Dequeue(), _observer2.Values.Dequeue(), _observer3.Values.Dequeue(), _observer4.Values.Dequeue(), _observer5.Values.Dequeue(), _observer6.Values.Dequeue(), _observer7.Values.Dequeue(), _observer8.Values.Dequeue(), _observer9.Values.Dequeue(), _observer10.Values.Dequeue(), _observer11.Values.Dequeue(), _observer12.Values.Dequeue(), _observer13.Values.Dequeue(), _observer14.Values.Dequeue()); } } internal sealed class Zip : Producer._> { private readonly IObservable _source1; private readonly IObservable _source2; private readonly IObservable _source3; private readonly IObservable _source4; private readonly IObservable _source5; private readonly IObservable _source6; private readonly IObservable _source7; private readonly IObservable _source8; private readonly IObservable _source9; private readonly IObservable _source10; private readonly IObservable _source11; private readonly IObservable _source12; private readonly IObservable _source13; private readonly IObservable _source14; private readonly IObservable _source15; private readonly Func _resultSelector; public Zip(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, IObservable source11, IObservable source12, IObservable source13, IObservable source14, IObservable source15, Func resultSelector) { _source1 = source1; _source2 = source2; _source3 = source3; _source4 = source4; _source5 = source5; _source6 = source6; _source7 = source7; _source8 = source8; _source9 = source9; _source10 = source10; _source11 = source11; _source12 = source12; _source13 = source13; _source14 = source14; _source15 = source15; _resultSelector = resultSelector; } protected override _ CreateSink(IObserver observer) => new(_resultSelector, observer); protected override void Run(_ sink) => sink.Run(_source1, _source2, _source3, _source4, _source5, _source6, _source7, _source8, _source9, _source10, _source11, _source12, _source13, _source14, _source15); internal sealed class _ : ZipSink { private readonly Func _resultSelector; private readonly ZipObserver _observer1; private readonly ZipObserver _observer2; private readonly ZipObserver _observer3; private readonly ZipObserver _observer4; private readonly ZipObserver _observer5; private readonly ZipObserver _observer6; private readonly ZipObserver _observer7; private readonly ZipObserver _observer8; private readonly ZipObserver _observer9; private readonly ZipObserver _observer10; private readonly ZipObserver _observer11; private readonly ZipObserver _observer12; private readonly ZipObserver _observer13; private readonly ZipObserver _observer14; private readonly ZipObserver _observer15; public _(Func resultSelector, IObserver observer) : base(15, observer) { _resultSelector = resultSelector; _observer1 = new ZipObserver(_gate, this, 0); _observer2 = new ZipObserver(_gate, this, 1); _observer3 = new ZipObserver(_gate, this, 2); _observer4 = new ZipObserver(_gate, this, 3); _observer5 = new ZipObserver(_gate, this, 4); _observer6 = new ZipObserver(_gate, this, 5); _observer7 = new ZipObserver(_gate, this, 6); _observer8 = new ZipObserver(_gate, this, 7); _observer9 = new ZipObserver(_gate, this, 8); _observer10 = new ZipObserver(_gate, this, 9); _observer11 = new ZipObserver(_gate, this, 10); _observer12 = new ZipObserver(_gate, this, 11); _observer13 = new ZipObserver(_gate, this, 12); _observer14 = new ZipObserver(_gate, this, 13); _observer15 = new ZipObserver(_gate, this, 14); } public void Run(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, IObservable source11, IObservable source12, IObservable source13, IObservable source14, IObservable source15) { var disposables = new IDisposable[15]; disposables[0] = _observer1; Queues[0] = _observer1.Values; disposables[1] = _observer2; Queues[1] = _observer2.Values; disposables[2] = _observer3; Queues[2] = _observer3.Values; disposables[3] = _observer4; Queues[3] = _observer4.Values; disposables[4] = _observer5; Queues[4] = _observer5.Values; disposables[5] = _observer6; Queues[5] = _observer6.Values; disposables[6] = _observer7; Queues[6] = _observer7.Values; disposables[7] = _observer8; Queues[7] = _observer8.Values; disposables[8] = _observer9; Queues[8] = _observer9.Values; disposables[9] = _observer10; Queues[9] = _observer10.Values; disposables[10] = _observer11; Queues[10] = _observer11.Values; disposables[11] = _observer12; Queues[11] = _observer12.Values; disposables[12] = _observer13; Queues[12] = _observer13.Values; disposables[13] = _observer14; Queues[13] = _observer14.Values; disposables[14] = _observer15; Queues[14] = _observer15.Values; _observer1.SetResource(source1.SubscribeSafe(_observer1)); _observer2.SetResource(source2.SubscribeSafe(_observer2)); _observer3.SetResource(source3.SubscribeSafe(_observer3)); _observer4.SetResource(source4.SubscribeSafe(_observer4)); _observer5.SetResource(source5.SubscribeSafe(_observer5)); _observer6.SetResource(source6.SubscribeSafe(_observer6)); _observer7.SetResource(source7.SubscribeSafe(_observer7)); _observer8.SetResource(source8.SubscribeSafe(_observer8)); _observer9.SetResource(source9.SubscribeSafe(_observer9)); _observer10.SetResource(source10.SubscribeSafe(_observer10)); _observer11.SetResource(source11.SubscribeSafe(_observer11)); _observer12.SetResource(source12.SubscribeSafe(_observer12)); _observer13.SetResource(source13.SubscribeSafe(_observer13)); _observer14.SetResource(source14.SubscribeSafe(_observer14)); _observer15.SetResource(source15.SubscribeSafe(_observer15)); SetUpstream(StableCompositeDisposable.CreateTrusted(disposables)); } protected override TResult GetResult() => _resultSelector(_observer1.Values.Dequeue(), _observer2.Values.Dequeue(), _observer3.Values.Dequeue(), _observer4.Values.Dequeue(), _observer5.Values.Dequeue(), _observer6.Values.Dequeue(), _observer7.Values.Dequeue(), _observer8.Values.Dequeue(), _observer9.Values.Dequeue(), _observer10.Values.Dequeue(), _observer11.Values.Dequeue(), _observer12.Values.Dequeue(), _observer13.Values.Dequeue(), _observer14.Values.Dequeue(), _observer15.Values.Dequeue()); } } internal sealed class Zip : Producer._> { private readonly IObservable _source1; private readonly IObservable _source2; private readonly IObservable _source3; private readonly IObservable _source4; private readonly IObservable _source5; private readonly IObservable _source6; private readonly IObservable _source7; private readonly IObservable _source8; private readonly IObservable _source9; private readonly IObservable _source10; private readonly IObservable _source11; private readonly IObservable _source12; private readonly IObservable _source13; private readonly IObservable _source14; private readonly IObservable _source15; private readonly IObservable _source16; private readonly Func _resultSelector; public Zip(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, IObservable source11, IObservable source12, IObservable source13, IObservable source14, IObservable source15, IObservable source16, Func resultSelector) { _source1 = source1; _source2 = source2; _source3 = source3; _source4 = source4; _source5 = source5; _source6 = source6; _source7 = source7; _source8 = source8; _source9 = source9; _source10 = source10; _source11 = source11; _source12 = source12; _source13 = source13; _source14 = source14; _source15 = source15; _source16 = source16; _resultSelector = resultSelector; } protected override _ CreateSink(IObserver observer) => new(_resultSelector, observer); protected override void Run(_ sink) => sink.Run(_source1, _source2, _source3, _source4, _source5, _source6, _source7, _source8, _source9, _source10, _source11, _source12, _source13, _source14, _source15, _source16); internal sealed class _ : ZipSink { private readonly Func _resultSelector; private readonly ZipObserver _observer1; private readonly ZipObserver _observer2; private readonly ZipObserver _observer3; private readonly ZipObserver _observer4; private readonly ZipObserver _observer5; private readonly ZipObserver _observer6; private readonly ZipObserver _observer7; private readonly ZipObserver _observer8; private readonly ZipObserver _observer9; private readonly ZipObserver _observer10; private readonly ZipObserver _observer11; private readonly ZipObserver _observer12; private readonly ZipObserver _observer13; private readonly ZipObserver _observer14; private readonly ZipObserver _observer15; private readonly ZipObserver _observer16; public _(Func resultSelector, IObserver observer) : base(16, observer) { _resultSelector = resultSelector; _observer1 = new ZipObserver(_gate, this, 0); _observer2 = new ZipObserver(_gate, this, 1); _observer3 = new ZipObserver(_gate, this, 2); _observer4 = new ZipObserver(_gate, this, 3); _observer5 = new ZipObserver(_gate, this, 4); _observer6 = new ZipObserver(_gate, this, 5); _observer7 = new ZipObserver(_gate, this, 6); _observer8 = new ZipObserver(_gate, this, 7); _observer9 = new ZipObserver(_gate, this, 8); _observer10 = new ZipObserver(_gate, this, 9); _observer11 = new ZipObserver(_gate, this, 10); _observer12 = new ZipObserver(_gate, this, 11); _observer13 = new ZipObserver(_gate, this, 12); _observer14 = new ZipObserver(_gate, this, 13); _observer15 = new ZipObserver(_gate, this, 14); _observer16 = new ZipObserver(_gate, this, 15); } public void Run(IObservable source1, IObservable source2, IObservable source3, IObservable source4, IObservable source5, IObservable source6, IObservable source7, IObservable source8, IObservable source9, IObservable source10, IObservable source11, IObservable source12, IObservable source13, IObservable source14, IObservable source15, IObservable source16) { var disposables = new IDisposable[16]; disposables[0] = _observer1; Queues[0] = _observer1.Values; disposables[1] = _observer2; Queues[1] = _observer2.Values; disposables[2] = _observer3; Queues[2] = _observer3.Values; disposables[3] = _observer4; Queues[3] = _observer4.Values; disposables[4] = _observer5; Queues[4] = _observer5.Values; disposables[5] = _observer6; Queues[5] = _observer6.Values; disposables[6] = _observer7; Queues[6] = _observer7.Values; disposables[7] = _observer8; Queues[7] = _observer8.Values; disposables[8] = _observer9; Queues[8] = _observer9.Values; disposables[9] = _observer10; Queues[9] = _observer10.Values; disposables[10] = _observer11; Queues[10] = _observer11.Values; disposables[11] = _observer12; Queues[11] = _observer12.Values; disposables[12] = _observer13; Queues[12] = _observer13.Values; disposables[13] = _observer14; Queues[13] = _observer14.Values; disposables[14] = _observer15; Queues[14] = _observer15.Values; disposables[15] = _observer16; Queues[15] = _observer16.Values; _observer1.SetResource(source1.SubscribeSafe(_observer1)); _observer2.SetResource(source2.SubscribeSafe(_observer2)); _observer3.SetResource(source3.SubscribeSafe(_observer3)); _observer4.SetResource(source4.SubscribeSafe(_observer4)); _observer5.SetResource(source5.SubscribeSafe(_observer5)); _observer6.SetResource(source6.SubscribeSafe(_observer6)); _observer7.SetResource(source7.SubscribeSafe(_observer7)); _observer8.SetResource(source8.SubscribeSafe(_observer8)); _observer9.SetResource(source9.SubscribeSafe(_observer9)); _observer10.SetResource(source10.SubscribeSafe(_observer10)); _observer11.SetResource(source11.SubscribeSafe(_observer11)); _observer12.SetResource(source12.SubscribeSafe(_observer12)); _observer13.SetResource(source13.SubscribeSafe(_observer13)); _observer14.SetResource(source14.SubscribeSafe(_observer14)); _observer15.SetResource(source15.SubscribeSafe(_observer15)); _observer16.SetResource(source16.SubscribeSafe(_observer16)); SetUpstream(StableCompositeDisposable.CreateTrusted(disposables)); } protected override TResult GetResult() => _resultSelector(_observer1.Values.Dequeue(), _observer2.Values.Dequeue(), _observer3.Values.Dequeue(), _observer4.Values.Dequeue(), _observer5.Values.Dequeue(), _observer6.Values.Dequeue(), _observer7.Values.Dequeue(), _observer8.Values.Dequeue(), _observer9.Values.Dequeue(), _observer10.Values.Dequeue(), _observer11.Values.Dequeue(), _observer12.Values.Dequeue(), _observer13.Values.Dequeue(), _observer14.Values.Dequeue(), _observer15.Values.Dequeue(), _observer16.Values.Dequeue()); } } #endregion #endregion }