@Override public void call(Subscriber<? super Response<T>> subscriber) { // Since Call is a one-shot type, clone it for each new subscriber. Call<T> call = originalCall.clone(); final CallArbiter<T> arbiter = new CallArbiter<>(call, subscriber); subscriber.add(arbiter); subscriber.setProducer(arbiter); call.enqueue(new Callback<T>() { @Override public void onResponse(Call<T> call, Response<T> response) { arbiter.emitResponse(response); } @Override public void onFailure(Call<T> call, Throwable t) { Exceptions.throwIfFatal(t); arbiter.emitError(t); } }); } }
private void setNewReadProducer(Channel channel, Subscriber<? super R> subscriber) { final ReadProducer<R> producer = new ReadProducer<>(subscriber, channel); subscriber.setProducer(producer); onNewReadSubscriber(subscriber); readProducer = producer; }
@Override public void call(Subscriber<? super T> subscriber) { switch (request.getRequestType()) { case RequestType.SIMPLE: ANResolver<T> anResolver = new ANResolver<>(request, subscriber); subscriber.add(anResolver); subscriber.setProducer(anResolver); break; case RequestType.DOWNLOAD: DownloadANResolver<T> downloadANResolver = new DownloadANResolver<>(request, subscriber); subscriber.add(downloadANResolver); subscriber.setProducer(downloadANResolver); break; case RequestType.MULTIPART: MultipartANResolver<T> multipartANResolver = new MultipartANResolver<>(request, subscriber); subscriber.add(multipartANResolver); subscriber.setProducer(multipartANResolver); break; } } }
@Override public void call(Subscriber<? super Response<T>> subscriber) { // Since Call is a one-shot type, clone it for each new subscriber. Call<T> call = originalCall.clone(); CallArbiter<T> arbiter = new CallArbiter<>(call, subscriber); subscriber.add(arbiter); subscriber.setProducer(arbiter); Response<T> response; try { response = call.execute(); } catch (Throwable t) { Exceptions.throwIfFatal(t); arbiter.emitError(t); return; } arbiter.emitResponse(response); } }
protected final void checkEagerSubscriptionIfConfigured(Channel channel) { if (channel.config().isAutoRead() && null == readProducer) { // If the channel is set to auto-read and there is no eager subscription then, we should raise errors // when a subscriber arrives. raiseErrorOnInputSubscription = true; final Subscriber<? super R> discardAll = ConnectionInputSubscriberEvent.discardAllInput() .getSubscriber(); final ReadProducer<R> producer = new ReadProducer<>(discardAll, channel); discardAll.setProducer(producer); readProducer = producer; } }
final CallArbiter<T> arbiter = new CallArbiter<>(call, subscriber); subscriber.add(arbiter); subscriber.setProducer(arbiter);
subscriber.setProducer(p); if (_terminated) { p.terminateAndDrain(_terminalError);
@Override public void call(Subscriber<? super Response<T>> subscriber) { // Since Call is a one-shot type, clone it for each new subscriber. Call<T> call = originalCall.clone(); CallArbiter<T> arbiter = new CallArbiter<>(call, subscriber); subscriber.add(arbiter); subscriber.setProducer(arbiter); Response<T> response; try { response = call.execute(); } catch (Throwable t) { Exceptions.throwIfFatal(t); arbiter.emitError(t); return; } arbiter.emitNext(response); arbiter.emitComplete(); } }
@Override public void call(Subscriber<? super Entry<T, S>> subscriber) { subscriber.setProducer(new SearchProducer<T, S>(node, condition, subscriber)); }
final Iterator<Integer> iter = it.iterator(); final AtomicLong requested = new AtomicLong(); s.setProducer((long request) -> {
@Override public void call(rx.Subscriber<? super T> t) { SourceSubscriber<T> parent = new SourceSubscriber<T>(t); t.add(parent); t.setProducer(parent); source.subscribe(parent); }
@Override public void call(rx.Subscriber<? super T> t) { hu.akarnokd.rxjava.interop.FlowableV2ToObservableV1.SourceSubscriber<T> parent = new hu.akarnokd.rxjava.interop.FlowableV2ToObservableV1.SourceSubscriber<T>(t); t.add(parent); t.setProducer(parent); processor.subscribe(parent); }
@Override public void call(rx.Subscriber<? super T> t) { SourceObserver<T> parent = new SourceObserver<T>(t); t.add(parent); t.setProducer(parent); subject.subscribe(parent); }
@Override public void call(Subscriber<? super T> subscriber) { State state = null; try { if (stateProvided) { state = (State) parameters.get(0).value(); setupUnsubscription(subscriber, state); } else { state = new State(); connectAndPrepareStatement(subscriber, state); setupUnsubscription(subscriber, state); executeQuery(subscriber, state); } subscriber.setProducer(new QuerySelectProducer<T>(function, subscriber, state.con, state.ps, state.rs)); } catch (Throwable e) { query.context().endTransactionObserve(); query.context().endTransactionSubscribe(); try { if (state != null) closeQuietly(state); } finally { handleException(e, subscriber); } } }
@Override public void setProducer(Producer p) { super.setProducer(p); started.set(true); reenterProducer.call(); }
@Override public void setProducer(Producer p) { super.setProducer(p); started.set(true); reenterProducer.call(); }
@Override public void call(Subscriber<? super T> subscriber) { RepeatingProducer<T> producer = new RepeatingProducer<T>(subscriber, value); subscriber.setProducer(producer); }
@Override public void call(final Subscriber<? super R> child) { if (sources.isEmpty()) { child.onCompleted(); return; } if (sources.size() == 1) { child.setProducer(new SingleSourceProducer<T, R>(child, sources.get(0), combinator)); } else { child.setProducer(new MultiSourceProducer<T, R>(child, sources, combinator)); } }
@Override public void call(Subscriber<? super T> child) { final MapLastSubscriber<T> parent = new MapLastSubscriber<T>(child, function); child.add(parent); child.setProducer(new Producer() { @Override public void request(long n) { parent.requestMore(n); } }); source.unsafeSubscribe(parent); }
@Override public void call(final Subscriber<? super Response<T>> subscriber) { // Since Call is a one-shot type, clone it for each new subscriber. Call<T> call = originalCall.clone(); // Wrap the call in a helper which handles both unsubscription and backpressure. RequestArbiter<T> requestArbiter = new RequestArbiter<>(call, subscriber); subscriber.add(Subscriptions.create(requestArbiter)); subscriber.setProducer(requestArbiter); } }