public <T> void onNext(AbstractListenerWriteProcessor<T> processor, T data) { processor.discardData(data); processor.cancel(); processor.onError(new IllegalStateException("Illegal onNext without demand")); }
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 onNext(AbstractListenerWriteProcessor<T> processor, T data) { if (processor.isDataEmpty(data)) { Assert.state(processor.subscription != null, "No subscription"); processor.subscription.request(1); } else { processor.dataReceived(data); processor.changeStateToReceived(this); } } @Override
private void changeStateToReceived(State oldState) { if (changeState(oldState, State.RECEIVED)) { writeIfPossible(); } }
private void writeIfPossible() { boolean result = isWritePossible(); if (!result && rsWriteLogger.isTraceEnabled()) { rsWriteLogger.trace(getLogPrefix() + "isWritePossible: false"); } if (result) { onWritePossible(); } }
private boolean changeState(State oldState, State newState) { boolean result = this.state.compareAndSet(oldState, newState); if (result && rsWriteLogger.isTraceEnabled()) { rsWriteLogger.trace(getLogPrefix() + oldState + " -> " + newState); } return result; }
private void discardCurrentData() { T data = this.currentData; this.currentData = null; if (data != null) { discardData(data); } }
@Override protected void dataReceived(DataBuffer dataBuffer) { super.dataReceived(dataBuffer); this.byteBuffer = dataBuffer.asByteBuffer(); }
private void writeIfPossible() { boolean result = isWritePossible(); if (logger.isTraceEnabled()) { logger.trace("isWritePossible[" + result + "]"); } if (result) { onWritePossible(); } }
private void writeIfPossible() { boolean result = isWritePossible(); if (!result && rsWriteLogger.isTraceEnabled()) { rsWriteLogger.trace(getLogPrefix() + "isWritePossible: false"); } if (result) { onWritePossible(); } }
/** * Error signal from the upstream, write Publisher. This is also used by * sub-classes to delegate error notifications from the container. */ @Override public final void onError(Throwable ex) { if (rsWriteLogger.isTraceEnabled()) { rsWriteLogger.trace(getLogPrefix() + "Write source error: " + ex); } this.state.get().onError(this, ex); }
private void changeStateToReceived(State oldState) { if (changeState(oldState, State.RECEIVED)) { writeIfPossible(); } }
private void discardCurrentData() { T data = this.currentData; this.currentData = null; if (data != null) { discardData(data); } }
@Override protected void dataReceived(DataBuffer dataBuffer) { super.dataReceived(dataBuffer); this.byteBuffer = dataBuffer.asByteBuffer(); }
/** * Template method invoked after a data item to write is received via * {@link Subscriber#onNext(Object)}. The default implementation saves the * data item for writing once that is possible. */ protected void dataReceived(T data) { T prev = this.currentData; if (prev != null) { // This shouldn't happen: // 1. dataReceived can only be called from REQUESTED state // 2. currentData is cleared before requesting discardData(data); cancel(); onError(new IllegalStateException("Received new data while current not processed yet.")); } this.currentData = data; }
private void writeIfPossible() { boolean result = isWritePossible(); if (!result && rsWriteLogger.isTraceEnabled()) { rsWriteLogger.trace(getLogPrefix() + "isWritePossible: false"); } if (result) { onWritePossible(); } }
private void changeStateToComplete(State oldState) { if (changeState(oldState, State.COMPLETED)) { discardCurrentData(); writingComplete(); this.resultPublisher.publishComplete(); } else { this.state.get().onComplete(this); } }
/** * Completion signal from the upstream, write Publisher. This is also used * by sub-classes to delegate completion notifications from the container. */ @Override public final void onComplete() { if (rsWriteLogger.isTraceEnabled()) { rsWriteLogger.trace(getLogPrefix() + "No more items to write"); } this.state.get().onComplete(this); }
@Override public <T> void onNext(AbstractListenerWriteProcessor<T> processor, T data) { if (processor.isDataEmpty(data)) { Assert.state(processor.subscription != null, "No subscription"); processor.subscription.request(1); } else { processor.dataReceived(data); processor.changeStateToReceived(this); } } @Override
private void changeStateToReceived(State oldState) { if (changeState(oldState, State.RECEIVED)) { writeIfPossible(); } }