You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.3 KiB
48 lines
1.3 KiB
// Needed for NET40 |
|
#if !NET_4_6 |
|
using System; |
|
using LinqInternal.Core; |
|
|
|
namespace LinqInternal.Collections |
|
{ |
|
[Serializable] |
|
internal sealed class CustomObserver<T> : IObserver<T> |
|
{ |
|
private readonly Action _onCompleted; |
|
private readonly Action<Exception> _onError; |
|
private readonly Action<T> _onNext; |
|
|
|
public CustomObserver(Action<T> onNext) |
|
{ |
|
_onCompleted = ActionHelper.GetNoopAction(); |
|
_onError = ActionHelper.GetNoopAction<Exception>(); |
|
_onNext = onNext ?? ActionHelper.GetNoopAction<T>(); |
|
} |
|
|
|
public CustomObserver(Action onCompleted, Action<Exception> onError, Action<T> onNext) |
|
{ |
|
_onCompleted = onCompleted ?? ActionHelper.GetNoopAction(); |
|
_onError = onError ?? ActionHelper.GetNoopAction<Exception>(); |
|
_onNext = onNext ?? ActionHelper.GetNoopAction<T>(); |
|
} |
|
|
|
public void OnCompleted() |
|
{ |
|
var onCompleted = _onCompleted; |
|
onCompleted(); |
|
} |
|
|
|
public void OnError(Exception error) |
|
{ |
|
var onError = _onError; |
|
onError(error); |
|
} |
|
|
|
public void OnNext(T value) |
|
{ |
|
var onNext = _onNext; |
|
onNext(value); |
|
} |
|
} |
|
} |
|
#endif |