// 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.Subjects; namespace System.Reactive.Linq { // REVIEW: Consider if these are worth retaining in the async space. public partial class AsyncObservable { public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return () => { var subject = new SequentialAsyncAsyncSubject(); try { AsyncObserver.FromAsyncPattern(subject, begin, end); } catch (Exception ex) { return Throw(ex); } return subject.AsAsyncObservable(); }; } public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return (arg1) => { var subject = new SequentialAsyncAsyncSubject(); try { AsyncObserver.FromAsyncPattern(subject, begin, end, arg1); } catch (Exception ex) { return Throw(ex); } return subject.AsAsyncObservable(); }; } public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return (arg1, arg2) => { var subject = new SequentialAsyncAsyncSubject(); try { AsyncObserver.FromAsyncPattern(subject, begin, end, arg1, arg2); } catch (Exception ex) { return Throw(ex); } return subject.AsAsyncObservable(); }; } public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return (arg1, arg2, arg3) => { var subject = new SequentialAsyncAsyncSubject(); try { AsyncObserver.FromAsyncPattern(subject, begin, end, arg1, arg2, arg3); } catch (Exception ex) { return Throw(ex); } return subject.AsAsyncObservable(); }; } public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return (arg1, arg2, arg3, arg4) => { var subject = new SequentialAsyncAsyncSubject(); try { AsyncObserver.FromAsyncPattern(subject, begin, end, arg1, arg2, arg3, arg4); } catch (Exception ex) { return Throw(ex); } return subject.AsAsyncObservable(); }; } public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return (arg1, arg2, arg3, arg4, arg5) => { var subject = new SequentialAsyncAsyncSubject(); try { AsyncObserver.FromAsyncPattern(subject, begin, end, arg1, arg2, arg3, arg4, arg5); } catch (Exception ex) { return Throw(ex); } return subject.AsAsyncObservable(); }; } public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return (arg1, arg2, arg3, arg4, arg5, arg6) => { var subject = new SequentialAsyncAsyncSubject(); try { AsyncObserver.FromAsyncPattern(subject, begin, end, arg1, arg2, arg3, arg4, arg5, arg6); } catch (Exception ex) { return Throw(ex); } return subject.AsAsyncObservable(); }; } public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return (arg1, arg2, arg3, arg4, arg5, arg6, arg7) => { var subject = new SequentialAsyncAsyncSubject(); try { AsyncObserver.FromAsyncPattern(subject, begin, end, arg1, arg2, arg3, arg4, arg5, arg6, arg7); } catch (Exception ex) { return Throw(ex); } return subject.AsAsyncObservable(); }; } public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) => { var subject = new SequentialAsyncAsyncSubject(); try { AsyncObserver.FromAsyncPattern(subject, begin, end, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); } catch (Exception ex) { return Throw(ex); } return subject.AsAsyncObservable(); }; } public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) => { var subject = new SequentialAsyncAsyncSubject(); try { AsyncObserver.FromAsyncPattern(subject, begin, end, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); } catch (Exception ex) { return Throw(ex); } return subject.AsAsyncObservable(); }; } public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10) => { var subject = new SequentialAsyncAsyncSubject(); try { AsyncObserver.FromAsyncPattern(subject, begin, end, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10); } catch (Exception ex) { return Throw(ex); } return subject.AsAsyncObservable(); }; } public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11) => { var subject = new SequentialAsyncAsyncSubject(); try { AsyncObserver.FromAsyncPattern(subject, begin, end, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11); } catch (Exception ex) { return Throw(ex); } return subject.AsAsyncObservable(); }; } public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12) => { var subject = new SequentialAsyncAsyncSubject(); try { AsyncObserver.FromAsyncPattern(subject, begin, end, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12); } catch (Exception ex) { return Throw(ex); } return subject.AsAsyncObservable(); }; } public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13) => { var subject = new SequentialAsyncAsyncSubject(); try { AsyncObserver.FromAsyncPattern(subject, begin, end, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13); } catch (Exception ex) { return Throw(ex); } return subject.AsAsyncObservable(); }; } public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14) => { var subject = new SequentialAsyncAsyncSubject(); try { AsyncObserver.FromAsyncPattern(subject, begin, end, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14); } catch (Exception ex) { return Throw(ex); } return subject.AsAsyncObservable(); }; } public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return () => { var subject = new SequentialAsyncAsyncSubject(); try { AsyncObserver.FromAsyncPattern(subject, begin, end); } catch (Exception ex) { return Throw(ex); } return subject.AsAsyncObservable(); }; } public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return (arg1) => { var subject = new SequentialAsyncAsyncSubject(); try { AsyncObserver.FromAsyncPattern(subject, begin, end, arg1); } catch (Exception ex) { return Throw(ex); } return subject.AsAsyncObservable(); }; } public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return (arg1, arg2) => { var subject = new SequentialAsyncAsyncSubject(); try { AsyncObserver.FromAsyncPattern(subject, begin, end, arg1, arg2); } catch (Exception ex) { return Throw(ex); } return subject.AsAsyncObservable(); }; } public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return (arg1, arg2, arg3) => { var subject = new SequentialAsyncAsyncSubject(); try { AsyncObserver.FromAsyncPattern(subject, begin, end, arg1, arg2, arg3); } catch (Exception ex) { return Throw(ex); } return subject.AsAsyncObservable(); }; } public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return (arg1, arg2, arg3, arg4) => { var subject = new SequentialAsyncAsyncSubject(); try { AsyncObserver.FromAsyncPattern(subject, begin, end, arg1, arg2, arg3, arg4); } catch (Exception ex) { return Throw(ex); } return subject.AsAsyncObservable(); }; } public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return (arg1, arg2, arg3, arg4, arg5) => { var subject = new SequentialAsyncAsyncSubject(); try { AsyncObserver.FromAsyncPattern(subject, begin, end, arg1, arg2, arg3, arg4, arg5); } catch (Exception ex) { return Throw(ex); } return subject.AsAsyncObservable(); }; } public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return (arg1, arg2, arg3, arg4, arg5, arg6) => { var subject = new SequentialAsyncAsyncSubject(); try { AsyncObserver.FromAsyncPattern(subject, begin, end, arg1, arg2, arg3, arg4, arg5, arg6); } catch (Exception ex) { return Throw(ex); } return subject.AsAsyncObservable(); }; } public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return (arg1, arg2, arg3, arg4, arg5, arg6, arg7) => { var subject = new SequentialAsyncAsyncSubject(); try { AsyncObserver.FromAsyncPattern(subject, begin, end, arg1, arg2, arg3, arg4, arg5, arg6, arg7); } catch (Exception ex) { return Throw(ex); } return subject.AsAsyncObservable(); }; } public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) => { var subject = new SequentialAsyncAsyncSubject(); try { AsyncObserver.FromAsyncPattern(subject, begin, end, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); } catch (Exception ex) { return Throw(ex); } return subject.AsAsyncObservable(); }; } public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) => { var subject = new SequentialAsyncAsyncSubject(); try { AsyncObserver.FromAsyncPattern(subject, begin, end, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); } catch (Exception ex) { return Throw(ex); } return subject.AsAsyncObservable(); }; } public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10) => { var subject = new SequentialAsyncAsyncSubject(); try { AsyncObserver.FromAsyncPattern(subject, begin, end, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10); } catch (Exception ex) { return Throw(ex); } return subject.AsAsyncObservable(); }; } public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11) => { var subject = new SequentialAsyncAsyncSubject(); try { AsyncObserver.FromAsyncPattern(subject, begin, end, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11); } catch (Exception ex) { return Throw(ex); } return subject.AsAsyncObservable(); }; } public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12) => { var subject = new SequentialAsyncAsyncSubject(); try { AsyncObserver.FromAsyncPattern(subject, begin, end, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12); } catch (Exception ex) { return Throw(ex); } return subject.AsAsyncObservable(); }; } public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13) => { var subject = new SequentialAsyncAsyncSubject(); try { AsyncObserver.FromAsyncPattern(subject, begin, end, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13); } catch (Exception ex) { return Throw(ex); } return subject.AsAsyncObservable(); }; } public static Func> FromAsyncPattern(Func begin, Func end) { if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14) => { var subject = new SequentialAsyncAsyncSubject(); try { AsyncObserver.FromAsyncPattern(subject, begin, end, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14); } catch (Exception ex) { return Throw(ex); } return subject.AsAsyncObservable(); }; } } public partial class AsyncObserver { public static IAsyncResult FromAsyncPattern(IAsyncObserver observer, Func begin, Func end) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return begin(async iar => { TResult result; try { result = end(iar); } catch (Exception ex) { await observer.OnErrorAsync(ex).ConfigureAwait(false); return; } await observer.OnNextAsync(result).ConfigureAwait(false); await observer.OnCompletedAsync().ConfigureAwait(false); }, null); } public static IAsyncResult FromAsyncPattern(IAsyncObserver observer, Func begin, Func end, T1 arg1) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return begin(arg1, async iar => { TResult result; try { result = end(iar); } catch (Exception ex) { await observer.OnErrorAsync(ex).ConfigureAwait(false); return; } await observer.OnNextAsync(result).ConfigureAwait(false); await observer.OnCompletedAsync().ConfigureAwait(false); }, null); } public static IAsyncResult FromAsyncPattern(IAsyncObserver observer, Func begin, Func end, T1 arg1, T2 arg2) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return begin(arg1, arg2, async iar => { TResult result; try { result = end(iar); } catch (Exception ex) { await observer.OnErrorAsync(ex).ConfigureAwait(false); return; } await observer.OnNextAsync(result).ConfigureAwait(false); await observer.OnCompletedAsync().ConfigureAwait(false); }, null); } public static IAsyncResult FromAsyncPattern(IAsyncObserver observer, Func begin, Func end, T1 arg1, T2 arg2, T3 arg3) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return begin(arg1, arg2, arg3, async iar => { TResult result; try { result = end(iar); } catch (Exception ex) { await observer.OnErrorAsync(ex).ConfigureAwait(false); return; } await observer.OnNextAsync(result).ConfigureAwait(false); await observer.OnCompletedAsync().ConfigureAwait(false); }, null); } public static IAsyncResult FromAsyncPattern(IAsyncObserver observer, Func begin, Func end, T1 arg1, T2 arg2, T3 arg3, T4 arg4) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return begin(arg1, arg2, arg3, arg4, async iar => { TResult result; try { result = end(iar); } catch (Exception ex) { await observer.OnErrorAsync(ex).ConfigureAwait(false); return; } await observer.OnNextAsync(result).ConfigureAwait(false); await observer.OnCompletedAsync().ConfigureAwait(false); }, null); } public static IAsyncResult FromAsyncPattern(IAsyncObserver observer, Func begin, Func end, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return begin(arg1, arg2, arg3, arg4, arg5, async iar => { TResult result; try { result = end(iar); } catch (Exception ex) { await observer.OnErrorAsync(ex).ConfigureAwait(false); return; } await observer.OnNextAsync(result).ConfigureAwait(false); await observer.OnCompletedAsync().ConfigureAwait(false); }, null); } public static IAsyncResult FromAsyncPattern(IAsyncObserver observer, Func begin, Func end, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return begin(arg1, arg2, arg3, arg4, arg5, arg6, async iar => { TResult result; try { result = end(iar); } catch (Exception ex) { await observer.OnErrorAsync(ex).ConfigureAwait(false); return; } await observer.OnNextAsync(result).ConfigureAwait(false); await observer.OnCompletedAsync().ConfigureAwait(false); }, null); } public static IAsyncResult FromAsyncPattern(IAsyncObserver observer, Func begin, Func end, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return begin(arg1, arg2, arg3, arg4, arg5, arg6, arg7, async iar => { TResult result; try { result = end(iar); } catch (Exception ex) { await observer.OnErrorAsync(ex).ConfigureAwait(false); return; } await observer.OnNextAsync(result).ConfigureAwait(false); await observer.OnCompletedAsync().ConfigureAwait(false); }, null); } public static IAsyncResult FromAsyncPattern(IAsyncObserver observer, Func begin, Func end, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return begin(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, async iar => { TResult result; try { result = end(iar); } catch (Exception ex) { await observer.OnErrorAsync(ex).ConfigureAwait(false); return; } await observer.OnNextAsync(result).ConfigureAwait(false); await observer.OnCompletedAsync().ConfigureAwait(false); }, null); } public static IAsyncResult FromAsyncPattern(IAsyncObserver observer, Func begin, Func end, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return begin(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, async iar => { TResult result; try { result = end(iar); } catch (Exception ex) { await observer.OnErrorAsync(ex).ConfigureAwait(false); return; } await observer.OnNextAsync(result).ConfigureAwait(false); await observer.OnCompletedAsync().ConfigureAwait(false); }, null); } public static IAsyncResult FromAsyncPattern(IAsyncObserver observer, Func begin, Func end, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return begin(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, async iar => { TResult result; try { result = end(iar); } catch (Exception ex) { await observer.OnErrorAsync(ex).ConfigureAwait(false); return; } await observer.OnNextAsync(result).ConfigureAwait(false); await observer.OnCompletedAsync().ConfigureAwait(false); }, null); } public static IAsyncResult FromAsyncPattern(IAsyncObserver observer, Func begin, Func end, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return begin(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, async iar => { TResult result; try { result = end(iar); } catch (Exception ex) { await observer.OnErrorAsync(ex).ConfigureAwait(false); return; } await observer.OnNextAsync(result).ConfigureAwait(false); await observer.OnCompletedAsync().ConfigureAwait(false); }, null); } public static IAsyncResult FromAsyncPattern(IAsyncObserver observer, Func begin, Func end, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return begin(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, async iar => { TResult result; try { result = end(iar); } catch (Exception ex) { await observer.OnErrorAsync(ex).ConfigureAwait(false); return; } await observer.OnNextAsync(result).ConfigureAwait(false); await observer.OnCompletedAsync().ConfigureAwait(false); }, null); } public static IAsyncResult FromAsyncPattern(IAsyncObserver observer, Func begin, Func end, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return begin(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, async iar => { TResult result; try { result = end(iar); } catch (Exception ex) { await observer.OnErrorAsync(ex).ConfigureAwait(false); return; } await observer.OnNextAsync(result).ConfigureAwait(false); await observer.OnCompletedAsync().ConfigureAwait(false); }, null); } public static IAsyncResult FromAsyncPattern(IAsyncObserver observer, Func begin, Func end, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13, T14 arg14) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return begin(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14, async iar => { TResult result; try { result = end(iar); } catch (Exception ex) { await observer.OnErrorAsync(ex).ConfigureAwait(false); return; } await observer.OnNextAsync(result).ConfigureAwait(false); await observer.OnCompletedAsync().ConfigureAwait(false); }, null); } public static IAsyncResult FromAsyncPattern(IAsyncObserver observer, Func begin, Func end) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return FromAsyncPattern(observer, begin, iar => { end(iar); return Unit.Default; }); } public static IAsyncResult FromAsyncPattern(IAsyncObserver observer, Func begin, Func end, T1 arg1) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return FromAsyncPattern(observer, begin, iar => { end(iar); return Unit.Default; }, arg1); } public static IAsyncResult FromAsyncPattern(IAsyncObserver observer, Func begin, Func end, T1 arg1, T2 arg2) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return FromAsyncPattern(observer, begin, iar => { end(iar); return Unit.Default; }, arg1, arg2); } public static IAsyncResult FromAsyncPattern(IAsyncObserver observer, Func begin, Func end, T1 arg1, T2 arg2, T3 arg3) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return FromAsyncPattern(observer, begin, iar => { end(iar); return Unit.Default; }, arg1, arg2, arg3); } public static IAsyncResult FromAsyncPattern(IAsyncObserver observer, Func begin, Func end, T1 arg1, T2 arg2, T3 arg3, T4 arg4) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return FromAsyncPattern(observer, begin, iar => { end(iar); return Unit.Default; }, arg1, arg2, arg3, arg4); } public static IAsyncResult FromAsyncPattern(IAsyncObserver observer, Func begin, Func end, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return FromAsyncPattern(observer, begin, iar => { end(iar); return Unit.Default; }, arg1, arg2, arg3, arg4, arg5); } public static IAsyncResult FromAsyncPattern(IAsyncObserver observer, Func begin, Func end, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return FromAsyncPattern(observer, begin, iar => { end(iar); return Unit.Default; }, arg1, arg2, arg3, arg4, arg5, arg6); } public static IAsyncResult FromAsyncPattern(IAsyncObserver observer, Func begin, Func end, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return FromAsyncPattern(observer, begin, iar => { end(iar); return Unit.Default; }, arg1, arg2, arg3, arg4, arg5, arg6, arg7); } public static IAsyncResult FromAsyncPattern(IAsyncObserver observer, Func begin, Func end, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return FromAsyncPattern(observer, begin, iar => { end(iar); return Unit.Default; }, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); } public static IAsyncResult FromAsyncPattern(IAsyncObserver observer, Func begin, Func end, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return FromAsyncPattern(observer, begin, iar => { end(iar); return Unit.Default; }, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); } public static IAsyncResult FromAsyncPattern(IAsyncObserver observer, Func begin, Func end, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return FromAsyncPattern(observer, begin, iar => { end(iar); return Unit.Default; }, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10); } public static IAsyncResult FromAsyncPattern(IAsyncObserver observer, Func begin, Func end, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return FromAsyncPattern(observer, begin, iar => { end(iar); return Unit.Default; }, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11); } public static IAsyncResult FromAsyncPattern(IAsyncObserver observer, Func begin, Func end, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return FromAsyncPattern(observer, begin, iar => { end(iar); return Unit.Default; }, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12); } public static IAsyncResult FromAsyncPattern(IAsyncObserver observer, Func begin, Func end, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return FromAsyncPattern(observer, begin, iar => { end(iar); return Unit.Default; }, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13); } public static IAsyncResult FromAsyncPattern(IAsyncObserver observer, Func begin, Func end, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13, T14 arg14) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (begin == null) throw new ArgumentNullException(nameof(begin)); if (end == null) throw new ArgumentNullException(nameof(end)); return FromAsyncPattern(observer, begin, iar => { end(iar); return Unit.Default; }, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14); } } }