/** * Create an instance with the given log prefix. * @since 5.1 */ public AbstractListenerWriteFlushProcessor(String logPrefix) { this.logPrefix = logPrefix; this.resultPublisher = new WriteResultPublisher(logPrefix); }
@Override public <T> void onComplete(AbstractListenerWriteFlushProcessor<T> processor) { if (processor.changeState(this, COMPLETED)) { processor.resultPublisher.publishComplete(); } else { processor.state.get().onComplete(processor); } } },
@Override void subscribe(WriteResultPublisher publisher, Subscriber<? super Void> subscriber) { Assert.notNull(subscriber, "Subscriber must not be null"); if (publisher.changeState(this, SUBSCRIBING)) { Subscription subscription = new WriteResultSubscription(publisher); publisher.subscriber = subscriber; subscriber.onSubscribe(subscription); publisher.changeState(SUBSCRIBING, SUBSCRIBED); // Now safe to check "beforeSubscribed" flags, they won't change once in NO_DEMAND if (publisher.completedBeforeSubscribed) { publisher.publishComplete(); } Throwable publisherError = publisher.errorBeforeSubscribed; if (publisherError != null) { publisher.publishError(publisherError); } } else { throw new IllegalStateException(toString()); } } @Override
public <T> void onError(AbstractListenerWriteFlushProcessor<T> processor, Throwable ex) { if (processor.changeState(this, COMPLETED)) { processor.resultPublisher.publishError(ex); } else { processor.state.get().onError(processor, ex); } }
@Override public final void subscribe(Subscriber<? super Void> subscriber) { this.resultPublisher.subscribe(subscriber); }
public <T> void onError(AbstractListenerWriteProcessor<T> processor, Throwable ex) { if (processor.changeState(this, COMPLETED)) { processor.discardCurrentData(); processor.writingComplete(); processor.resultPublisher.publishError(ex); } else { processor.state.get().onError(processor, ex); } }
@Override public final void subscribe(Subscriber<? super Void> subscriber) { // Technically, cancellation from the result subscriber should be propagated // to the upstream subscription. In practice, HttpHandler server adapters // don't have a reason to cancel the result subscription. this.resultPublisher.subscribe(subscriber); }
@Override public <T> void onComplete(AbstractListenerWriteFlushProcessor<T> processor) { if (processor.changeState(this, COMPLETED)) { processor.resultPublisher.publishComplete(); } else { processor.state.get().onComplete(processor); } } },
@Override void subscribe(WriteResultPublisher publisher, Subscriber<? super Void> subscriber) { Assert.notNull(subscriber, "Subscriber must not be null"); if (publisher.changeState(this, SUBSCRIBING)) { Subscription subscription = new WriteResultSubscription(publisher); publisher.subscriber = subscriber; subscriber.onSubscribe(subscription); publisher.changeState(SUBSCRIBING, SUBSCRIBED); // Now safe to check "beforeSubscribed" flags, they won't change once in NO_DEMAND if (publisher.completedBeforeSubscribed) { publisher.publishComplete(); } Throwable publisherError = publisher.errorBeforeSubscribed; if (publisherError != null) { publisher.publishError(publisherError); } } else { throw new IllegalStateException(toString()); } } @Override
public <T> void onError(AbstractListenerWriteFlushProcessor<T> processor, Throwable ex) { if (processor.changeState(this, COMPLETED)) { processor.resultPublisher.publishError(ex); } else { processor.state.get().onError(processor, ex); } }
@Override public final void subscribe(Subscriber<? super Void> subscriber) { // Technically, cancellation from the result subscriber should be propagated // to the upstream subscription. In practice, HttpHandler server adapters // don't have a reason to cancel the result subscription. this.resultPublisher.subscribe(subscriber); }
/** * Create an instance with the given log prefix. * @since 5.1 */ public AbstractListenerWriteProcessor(String logPrefix) { this.logPrefix = logPrefix; this.resultPublisher = new WriteResultPublisher(logPrefix); }
private void changeStateToComplete(State oldState) { if (changeState(oldState, State.COMPLETED)) { discardCurrentData(); writingComplete(); this.resultPublisher.publishComplete(); } else { this.state.get().onComplete(this); } }
@Override void subscribe(WriteResultPublisher publisher, Subscriber<? super Void> subscriber) { Assert.notNull(subscriber, "Subscriber must not be null"); if (publisher.changeState(this, SUBSCRIBING)) { Subscription subscription = new WriteResultSubscription(publisher); publisher.subscriber = subscriber; subscriber.onSubscribe(subscription); publisher.changeState(SUBSCRIBING, SUBSCRIBED); // Now safe to check "beforeSubscribed" flags, they won't change once in NO_DEMAND if (publisher.completedBeforeSubscribed) { publisher.publishComplete(); } Throwable publisherError = publisher.errorBeforeSubscribed; if (publisherError != null) { publisher.publishError(publisherError); } } else { throw new IllegalStateException(toString()); } } @Override
public <T> void onError(AbstractListenerWriteProcessor<T> processor, Throwable ex) { if (processor.changeState(this, COMPLETED)) { processor.discardCurrentData(); processor.writingComplete(); processor.resultPublisher.publishError(ex); } else { processor.state.get().onError(processor, ex); } }
@Override public final void subscribe(Subscriber<? super Void> subscriber) { this.resultPublisher.subscribe(subscriber); }
/** * Create an instance with the given log prefix. * @since 5.1 */ public AbstractListenerWriteProcessor(String logPrefix) { this.logPrefix = logPrefix; this.resultPublisher = new WriteResultPublisher(logPrefix); }
@Override public <T> void onFlushPossible(AbstractListenerWriteFlushProcessor<T> processor) { try { processor.flush(); } catch (Throwable ex) { processor.flushingFailed(ex); return; } if (processor.changeState(this, COMPLETED)) { processor.resultPublisher.publishComplete(); } else { processor.state.get().onComplete(processor); } } @Override
@Override void subscribe(WriteResultPublisher publisher, Subscriber<? super Void> subscriber) { Assert.notNull(subscriber, "Subscriber must not be null"); if (publisher.changeState(this, SUBSCRIBING)) { Subscription subscription = new WriteResultSubscription(publisher); publisher.subscriber = subscriber; subscriber.onSubscribe(subscription); publisher.changeState(SUBSCRIBING, SUBSCRIBED); // Now safe to check "beforeSubscribed" flags, they won't change once in NO_DEMAND if (publisher.completedBeforeSubscribed) { publisher.publishComplete(); } Throwable publisherError = publisher.errorBeforeSubscribed; if (publisherError != null) { publisher.publishError(publisherError); } } else { throw new IllegalStateException(toString()); } } @Override
public <T> void onError(AbstractListenerWriteFlushProcessor<T> processor, Throwable ex) { if (processor.changeState(this, COMPLETED)) { processor.resultPublisher.publishError(ex); } else { processor.state.get().onError(processor, ex); } }