FirstBlocking<T>
using System.
Reactive.
Disposables;
namespace System.
Reactive.
Linq.
ObservableImpl
{
internal sealed class FirstBlocking<
T> :
BaseBlocking<
T>
{
public override void OnCompleted()
{
Unblock();
if (!
Disposable.
GetIsDisposed(
ref _upstream))
Disposable.
TryDispose(
ref _upstream);
}
public override void OnError(
Exception error)
{
base.
OnError(
error);
if (!
Disposable.
GetIsDisposed(
ref _upstream))
Disposable.
TryDispose(
ref _upstream);
}
public override void OnNext(
T value)
{
if (!
_hasValue) {
_value =
value;
_hasValue =
true;
Disposable.
TryDispose(
ref _upstream);
Unblock();
}
}
}
}