@Override public <T> void onComplete(AbstractListenerWriteFlushProcessor<T> processor) { if (processor.changeState(this, COMPLETED)) { processor.resultPublisher.publishComplete(); } else { processor.state.get().onComplete(processor); } } },
@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
private void changeStateToComplete(State oldState) { if (changeState(oldState, State.COMPLETED)) { discardCurrentData(); writingComplete(); this.resultPublisher.publishComplete(); } else { this.state.get().onComplete(this); } }
@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 public <T> void writeComplete(AbstractListenerWriteFlushProcessor<T> processor) { try { processor.flush(); } catch (Throwable ex) { processor.flushingFailed(ex); return; } if (processor.changeState(this, REQUESTED)) { if (processor.subscriberCompleted) { if (processor.isFlushPending()) { // Ensure the final flush processor.changeState(REQUESTED, FLUSHING); processor.flushIfPossible(); } else if (processor.changeState(REQUESTED, COMPLETED)) { processor.resultPublisher.publishComplete(); } else { processor.state.get().onComplete(processor); } } else { Assert.state(processor.subscription != null, "No subscription"); processor.subscription.request(1); } } } @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
private void changeStateToComplete(State oldState) { if (changeState(oldState, State.COMPLETED)) { discardCurrentData(); writingComplete(); this.resultPublisher.publishComplete(); } else { this.state.get().onComplete(this); } }
@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 public <T> void writeComplete(AbstractListenerWriteFlushProcessor<T> processor) { try { processor.flush(); } catch (Throwable ex) { processor.flushingFailed(ex); return; } if (processor.changeState(this, REQUESTED)) { if (processor.subscriberCompleted) { if (processor.isFlushPending()) { // Ensure the final flush processor.changeState(REQUESTED, FLUSHING); processor.flushIfPossible(); } else if (processor.changeState(REQUESTED, COMPLETED)) { processor.resultPublisher.publishComplete(); } else { processor.state.get().onComplete(processor); } } else { Assert.state(processor.subscription != null, "No subscription"); processor.subscription.request(1); } } } @Override
private void changeStateToComplete(State oldState) { if (changeState(oldState, State.COMPLETED)) { discardCurrentData(); writingComplete(); this.resultPublisher.publishComplete(); } else { this.state.get().onComplete(this); } }
@Override public <T> void onComplete(AbstractListenerWriteFlushProcessor<T> processor) { if (processor.changeState(this, COMPLETED)) { processor.resultPublisher.publishComplete(); } else { processor.state.get().onComplete(processor); } } },
@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
@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
@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
private void changeStateToComplete(State oldState) { if (changeState(oldState, State.COMPLETED)) { discardCurrentData(); writingComplete(); this.resultPublisher.publishComplete(); } else { this.state.get().onComplete(this); } }
@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 public <T> void writeComplete(AbstractListenerWriteFlushProcessor<T> processor) { try { processor.flush(); } catch (Throwable ex) { processor.flushingFailed(ex); return; } if (processor.changeState(this, REQUESTED)) { if (processor.subscriberCompleted) { if (processor.isFlushPending()) { // Ensure the final flush processor.changeState(REQUESTED, FLUSHING); processor.flushIfPossible(); } else if (processor.changeState(REQUESTED, COMPLETED)) { processor.resultPublisher.publishComplete(); } else { processor.state.get().onComplete(processor); } } else { Assert.state(processor.subscription != null, "No subscription"); processor.subscription.request(1); } } } @Override
@Override public <T> void writeComplete(AbstractListenerWriteFlushProcessor<T> processor) { try { processor.flush(); } catch (Throwable ex) { processor.flushingFailed(ex); return; } if (processor.changeState(this, REQUESTED)) { if (processor.subscriberCompleted) { if (processor.isFlushPending()) { // Ensure the final flush processor.changeState(REQUESTED, FLUSHING); processor.flushIfPossible(); } else if (processor.changeState(REQUESTED, COMPLETED)) { processor.resultPublisher.publishComplete(); } else { processor.state.get().onComplete(processor); } } else { Assert.state(processor.subscription != null, "No subscription"); processor.subscription.request(1); } } } @Override