public void Subscribe(ISubscriber <T> subscriber) { try { ReactiveStreamsCompliance.RequireNonNullSubscriber(subscriber); ReactiveStreamsCompliance.TryOnSubscribe(subscriber, CancelledSubscription.Instance); ReactiveStreamsCompliance.TryOnError(subscriber, Cause); } catch (Exception e) { if (!(e is ISpecViolation)) { throw; } } }
public void Subscribe(ISubscriber <T> subscriber) { try { ReactiveStreamsCompliance.RequireNonNullSubscriber(subscriber); ReactiveStreamsCompliance.TryOnSubscribe(subscriber, new MaybeSubscription(subscriber, Promise)); Promise.Task.ContinueWith(t => { ReactiveStreamsCompliance.TryOnError(subscriber, t.Exception); }, TaskContinuationOptions.NotOnRanToCompletion); } catch (Exception) { //case sv: SpecViolation ⇒ ec.reportFailure(sv) throw; } }
private void ClosePublisher(ICompletedState withState) { SubscriptionTimeout.Cancel(); var prev = _state.Value; _state.Value = withState; if (prev is ICompletedState) { throw new IllegalStateException("Attempted to double shutdown publisher"); } if (prev is Attached) { var sub = ((Attached)prev).Subscriber; if (Subscriber == null) { ReactiveStreamsCompliance.TryOnSubscribe(sub, CancelledSubscription.Instance); } CloseSubscriber(sub, withState); } }
public void Request(long n) { if (n < 1) { ReactiveStreamsCompliance.RejectDueToNonPositiveDemand(_subscriber); } if (!_done) { _done = true; _promise.Task.ContinueWith(t => { if (!_promise.Task.Result.IsDefaultForType()) { ReactiveStreamsCompliance.TryOnNext(_subscriber, _promise.Task.Result); ReactiveStreamsCompliance.TryOnComplete(_subscriber); } else { ReactiveStreamsCompliance.TryOnComplete(_subscriber); } }, TaskContinuationOptions.OnlyOnRanToCompletion); } }
public void Dispatch(TIn element) => ReactiveStreamsCompliance.TryOnNext(Subscriber, element);
/// <summary> /// TBD /// </summary> /// <param name="element">TBD</param> public void OnNext(T element) { ReactiveStreamsCompliance.RequireNonNullElement(element); _impl.Tell(new FanIn.OnNext(_id, element)); }
/// <summary> /// TBD /// </summary> /// <param name="cause">TBD</param> public void OnError(Exception cause) { ReactiveStreamsCompliance.RequireNonNullException(cause); _impl.Tell(new FanIn.OnError(_id, cause)); }
/// <summary> /// TBD /// </summary> /// <param name="subscription">TBD</param> public void OnSubscribe(ISubscription subscription) { ReactiveStreamsCompliance.RequireNonNullSubscription(subscription); _impl.Tell(new FanIn.OnSubscribe(_id, subscription)); }
public void EnqueueOutputElement(object element) { ReactiveStreamsCompliance.RequireNonNullElement(element); DownstreamDemand--; ReactiveStreamsCompliance.TryOnNext(Subscriber, element); }
/// <summary> /// TBD /// </summary> /// <param name="element">TBD</param> public void EnqueueOutputElement(object element) { ReactiveStreamsCompliance.RequireNonNullElement(element); _downstreamBufferSpace -= 1; PushToDownstream((T)element); }
/// <summary> /// TBD /// </summary> /// <param name="cause">TBD</param> public void OnError(Exception cause) { ReactiveStreamsCompliance.RequireNonNullException(cause); _whenCompleted.TrySetException(cause); }
/// <summary> /// TBD /// </summary> /// <param name="cause">TBD</param> public void OnError(Exception cause) => ReactiveStreamsCompliance.RequireNonNullException(cause);
/// <summary> /// TBD /// </summary> /// <param name="subscription">TBD</param> public void OnSubscribe(ISubscription subscription) { ReactiveStreamsCompliance.RequireNonNullSubscription(subscription); subscription.Cancel(); }
/// <summary> /// TBD /// </summary> /// <param name="cause">TBD</param> /// <param name="name">TBD</param> public ErrorPublisher(Exception cause, string name) { ReactiveStreamsCompliance.RequireNonNullElement(cause); Cause = cause; Name = name; }
public void Apply <T>(ISubscriber <T> subscriber) => ReactiveStreamsCompliance.TryOnComplete(subscriber);
public void Apply <T>(ISubscriber <T> subscriber) => ReactiveStreamsCompliance.TryOnError(subscriber, Cause);
/// <summary> /// TBD /// </summary> /// <param name="element">TBD</param> public void OnNext(TIn element) => ReactiveStreamsCompliance.RequireNonNullElement(element);