// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. using System.Threading.Tasks; namespace System.Reactive.Linq { partial class AsyncObservable { public static IAsyncObservable Sum(this IAsyncObservable source) { if (source == null) throw new ArgumentNullException(nameof(source)); return Create(observer => source.SubscribeSafeAsync(AsyncObserver.SumInt32(observer))); } public static IAsyncObservable Sum(this IAsyncObservable source, Func selector) { if (source == null) throw new ArgumentNullException(nameof(source)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Create(observer => source.SubscribeSafeAsync(AsyncObserver.SumInt32(observer, selector))); } public static IAsyncObservable Sum(this IAsyncObservable source, Func> selector) { if (source == null) throw new ArgumentNullException(nameof(source)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Create(observer => source.SubscribeSafeAsync(AsyncObserver.SumInt32(observer, selector))); } public static IAsyncObservable Sum(this IAsyncObservable source) { if (source == null) throw new ArgumentNullException(nameof(source)); return Create(observer => source.SubscribeSafeAsync(AsyncObserver.SumNullableInt32(observer))); } public static IAsyncObservable Sum(this IAsyncObservable source, Func selector) { if (source == null) throw new ArgumentNullException(nameof(source)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Create(observer => source.SubscribeSafeAsync(AsyncObserver.SumNullableInt32(observer, selector))); } public static IAsyncObservable Sum(this IAsyncObservable source, Func> selector) { if (source == null) throw new ArgumentNullException(nameof(source)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Create(observer => source.SubscribeSafeAsync(AsyncObserver.SumNullableInt32(observer, selector))); } public static IAsyncObservable Sum(this IAsyncObservable source) { if (source == null) throw new ArgumentNullException(nameof(source)); return Create(observer => source.SubscribeSafeAsync(AsyncObserver.SumInt64(observer))); } public static IAsyncObservable Sum(this IAsyncObservable source, Func selector) { if (source == null) throw new ArgumentNullException(nameof(source)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Create(observer => source.SubscribeSafeAsync(AsyncObserver.SumInt64(observer, selector))); } public static IAsyncObservable Sum(this IAsyncObservable source, Func> selector) { if (source == null) throw new ArgumentNullException(nameof(source)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Create(observer => source.SubscribeSafeAsync(AsyncObserver.SumInt64(observer, selector))); } public static IAsyncObservable Sum(this IAsyncObservable source) { if (source == null) throw new ArgumentNullException(nameof(source)); return Create(observer => source.SubscribeSafeAsync(AsyncObserver.SumNullableInt64(observer))); } public static IAsyncObservable Sum(this IAsyncObservable source, Func selector) { if (source == null) throw new ArgumentNullException(nameof(source)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Create(observer => source.SubscribeSafeAsync(AsyncObserver.SumNullableInt64(observer, selector))); } public static IAsyncObservable Sum(this IAsyncObservable source, Func> selector) { if (source == null) throw new ArgumentNullException(nameof(source)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Create(observer => source.SubscribeSafeAsync(AsyncObserver.SumNullableInt64(observer, selector))); } public static IAsyncObservable Sum(this IAsyncObservable source) { if (source == null) throw new ArgumentNullException(nameof(source)); return Create(observer => source.SubscribeSafeAsync(AsyncObserver.SumSingle(observer))); } public static IAsyncObservable Sum(this IAsyncObservable source, Func selector) { if (source == null) throw new ArgumentNullException(nameof(source)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Create(observer => source.SubscribeSafeAsync(AsyncObserver.SumSingle(observer, selector))); } public static IAsyncObservable Sum(this IAsyncObservable source, Func> selector) { if (source == null) throw new ArgumentNullException(nameof(source)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Create(observer => source.SubscribeSafeAsync(AsyncObserver.SumSingle(observer, selector))); } public static IAsyncObservable Sum(this IAsyncObservable source) { if (source == null) throw new ArgumentNullException(nameof(source)); return Create(observer => source.SubscribeSafeAsync(AsyncObserver.SumNullableSingle(observer))); } public static IAsyncObservable Sum(this IAsyncObservable source, Func selector) { if (source == null) throw new ArgumentNullException(nameof(source)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Create(observer => source.SubscribeSafeAsync(AsyncObserver.SumNullableSingle(observer, selector))); } public static IAsyncObservable Sum(this IAsyncObservable source, Func> selector) { if (source == null) throw new ArgumentNullException(nameof(source)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Create(observer => source.SubscribeSafeAsync(AsyncObserver.SumNullableSingle(observer, selector))); } public static IAsyncObservable Sum(this IAsyncObservable source) { if (source == null) throw new ArgumentNullException(nameof(source)); return Create(observer => source.SubscribeSafeAsync(AsyncObserver.SumDouble(observer))); } public static IAsyncObservable Sum(this IAsyncObservable source, Func selector) { if (source == null) throw new ArgumentNullException(nameof(source)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Create(observer => source.SubscribeSafeAsync(AsyncObserver.SumDouble(observer, selector))); } public static IAsyncObservable Sum(this IAsyncObservable source, Func> selector) { if (source == null) throw new ArgumentNullException(nameof(source)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Create(observer => source.SubscribeSafeAsync(AsyncObserver.SumDouble(observer, selector))); } public static IAsyncObservable Sum(this IAsyncObservable source) { if (source == null) throw new ArgumentNullException(nameof(source)); return Create(observer => source.SubscribeSafeAsync(AsyncObserver.SumNullableDouble(observer))); } public static IAsyncObservable Sum(this IAsyncObservable source, Func selector) { if (source == null) throw new ArgumentNullException(nameof(source)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Create(observer => source.SubscribeSafeAsync(AsyncObserver.SumNullableDouble(observer, selector))); } public static IAsyncObservable Sum(this IAsyncObservable source, Func> selector) { if (source == null) throw new ArgumentNullException(nameof(source)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Create(observer => source.SubscribeSafeAsync(AsyncObserver.SumNullableDouble(observer, selector))); } public static IAsyncObservable Sum(this IAsyncObservable source) { if (source == null) throw new ArgumentNullException(nameof(source)); return Create(observer => source.SubscribeSafeAsync(AsyncObserver.SumDecimal(observer))); } public static IAsyncObservable Sum(this IAsyncObservable source, Func selector) { if (source == null) throw new ArgumentNullException(nameof(source)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Create(observer => source.SubscribeSafeAsync(AsyncObserver.SumDecimal(observer, selector))); } public static IAsyncObservable Sum(this IAsyncObservable source, Func> selector) { if (source == null) throw new ArgumentNullException(nameof(source)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Create(observer => source.SubscribeSafeAsync(AsyncObserver.SumDecimal(observer, selector))); } public static IAsyncObservable Sum(this IAsyncObservable source) { if (source == null) throw new ArgumentNullException(nameof(source)); return Create(observer => source.SubscribeSafeAsync(AsyncObserver.SumNullableDecimal(observer))); } public static IAsyncObservable Sum(this IAsyncObservable source, Func selector) { if (source == null) throw new ArgumentNullException(nameof(source)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Create(observer => source.SubscribeSafeAsync(AsyncObserver.SumNullableDecimal(observer, selector))); } public static IAsyncObservable Sum(this IAsyncObservable source, Func> selector) { if (source == null) throw new ArgumentNullException(nameof(source)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Create(observer => source.SubscribeSafeAsync(AsyncObserver.SumNullableDecimal(observer, selector))); } } partial class AsyncObserver { public static IAsyncObserver SumInt32(IAsyncObserver observer, Func selector) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Select(SumInt32(observer), selector); } public static IAsyncObserver SumInt32(IAsyncObserver observer, Func> selector) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Select(SumInt32(observer), selector); } public static IAsyncObserver SumNullableInt32(IAsyncObserver observer, Func selector) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Select(SumNullableInt32(observer), selector); } public static IAsyncObserver SumNullableInt32(IAsyncObserver observer, Func> selector) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Select(SumNullableInt32(observer), selector); } public static IAsyncObserver SumInt64(IAsyncObserver observer, Func selector) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Select(SumInt64(observer), selector); } public static IAsyncObserver SumInt64(IAsyncObserver observer, Func> selector) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Select(SumInt64(observer), selector); } public static IAsyncObserver SumNullableInt64(IAsyncObserver observer, Func selector) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Select(SumNullableInt64(observer), selector); } public static IAsyncObserver SumNullableInt64(IAsyncObserver observer, Func> selector) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Select(SumNullableInt64(observer), selector); } public static IAsyncObserver SumSingle(IAsyncObserver observer, Func selector) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Select(SumSingle(observer), selector); } public static IAsyncObserver SumSingle(IAsyncObserver observer, Func> selector) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Select(SumSingle(observer), selector); } public static IAsyncObserver SumNullableSingle(IAsyncObserver observer, Func selector) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Select(SumNullableSingle(observer), selector); } public static IAsyncObserver SumNullableSingle(IAsyncObserver observer, Func> selector) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Select(SumNullableSingle(observer), selector); } public static IAsyncObserver SumDouble(IAsyncObserver observer, Func selector) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Select(SumDouble(observer), selector); } public static IAsyncObserver SumDouble(IAsyncObserver observer, Func> selector) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Select(SumDouble(observer), selector); } public static IAsyncObserver SumNullableDouble(IAsyncObserver observer, Func selector) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Select(SumNullableDouble(observer), selector); } public static IAsyncObserver SumNullableDouble(IAsyncObserver observer, Func> selector) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Select(SumNullableDouble(observer), selector); } public static IAsyncObserver SumDecimal(IAsyncObserver observer, Func selector) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Select(SumDecimal(observer), selector); } public static IAsyncObserver SumDecimal(IAsyncObserver observer, Func> selector) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Select(SumDecimal(observer), selector); } public static IAsyncObserver SumNullableDecimal(IAsyncObserver observer, Func selector) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Select(SumNullableDecimal(observer), selector); } public static IAsyncObserver SumNullableDecimal(IAsyncObserver observer, Func> selector) { if (observer == null) throw new ArgumentNullException(nameof(observer)); if (selector == null) throw new ArgumentNullException(nameof(selector)); return Select(SumNullableDecimal(observer), selector); } } }