diff options
Diffstat (limited to 'FireBase/Extensions')
-rw-r--r-- | FireBase/Extensions/ObservableExtensions.cs | 43 | ||||
-rw-r--r-- | FireBase/Extensions/TaskExtensions.cs | 12 |
2 files changed, 28 insertions, 27 deletions
diff --git a/FireBase/Extensions/ObservableExtensions.cs b/FireBase/Extensions/ObservableExtensions.cs index 12cd5f3..0a672d7 100644 --- a/FireBase/Extensions/ObservableExtensions.cs +++ b/FireBase/Extensions/ObservableExtensions.cs @@ -1,40 +1,41 @@ -namespace Firebase.Database.Extensions -{ - using System; - using System.Reactive.Linq; +using System; +using System.Reactive.Linq; +namespace Firebase.Database.Extensions +{ public static class ObservableExtensions { /// <summary> - /// Returns a cold observable which retries (re-subscribes to) the source observable on error until it successfully terminates. + /// Returns a cold observable which retries (re-subscribes to) the source observable on error until it successfully + /// terminates. /// </summary> /// <param name="source">The source observable.</param> /// <param name="dueTime">How long to wait between attempts.</param> /// <param name="retryOnError">A predicate determining for which exceptions to retry. Defaults to all</param> /// <returns> - /// A cold observable which retries (re-subscribes to) the source observable on error up to the - /// specified number of times or until it successfully terminates. + /// A cold observable which retries (re-subscribes to) the source observable on error up to the + /// specified number of times or until it successfully terminates. /// </returns> public static IObservable<T> RetryAfterDelay<T, TException>( this IObservable<T> source, TimeSpan dueTime, Func<TException, bool> retryOnError) - where TException: Exception + where TException : Exception { - int attempt = 0; + var attempt = 0; return Observable.Defer(() => - { - return ((++attempt == 1) ? source : source.DelaySubscription(dueTime)) - .Select(item => new Tuple<bool, T, Exception>(true, item, null)) - .Catch<Tuple<bool, T, Exception>, TException>(e => retryOnError(e) - ? Observable.Throw<Tuple<bool, T, Exception>>(e) - : Observable.Return(new Tuple<bool, T, Exception>(false, default(T), e))); - }) - .Retry() - .SelectMany(t => t.Item1 - ? Observable.Return(t.Item2) - : Observable.Throw<T>(t.Item3)); + { + return (++attempt == 1 ? source : source.DelaySubscription(dueTime)) + .Select(item => new Tuple<bool, T, Exception>(true, item, null)) + .Catch<Tuple<bool, T, Exception>, TException>(e => retryOnError(e) + ? Observable.Throw<Tuple<bool, T, Exception>>(e) + : Observable.Return(new Tuple<bool, T, Exception>(false, default(T), e))); + }) + .Retry() + .SelectMany(t => t.Item1 + ? Observable.Return(t.Item2) + : Observable.Throw<T>(t.Item3)); } } -} +}
\ No newline at end of file diff --git a/FireBase/Extensions/TaskExtensions.cs b/FireBase/Extensions/TaskExtensions.cs index 26bbde6..c955b3a 100644 --- a/FireBase/Extensions/TaskExtensions.cs +++ b/FireBase/Extensions/TaskExtensions.cs @@ -1,12 +1,12 @@ -namespace Firebase.Database.Extensions -{ - using System; - using System.Threading.Tasks; +using System; +using System.Threading.Tasks; +namespace Firebase.Database.Extensions +{ public static class TaskExtensions { /// <summary> - /// Instead of unwrapping <see cref="AggregateException"/> it throws it as it is. + /// Instead of unwrapping <see cref="AggregateException" /> it throws it as it is. /// </summary> public static async Task WithAggregateException(this Task source) { @@ -20,4 +20,4 @@ } } } -} +}
\ No newline at end of file |