@Override <T> void onDataAvailable(AbstractListenerReadPublisher<T> publisher) { if (publisher.changeState(this, READING)) { try { boolean demandAvailable = publisher.readAndPublish(); if (demandAvailable) { publisher.changeToDemandState(READING); } else { publisher.readingPaused(); if (publisher.changeState(READING, NO_DEMAND)) { // Demand may have arrived since readAndPublish returned long r = publisher.demand; if (r > 0) { publisher.changeToDemandState(NO_DEMAND); } } } } catch (IOException ex) { publisher.onError(ex); } } // Else, either competing onDataAvailable (request vs container), or concurrent completion } },
@Override <T> void onDataAvailable(AbstractListenerReadPublisher<T> publisher) { if (publisher.changeState(this, READING)) { try { boolean demandAvailable = publisher.readAndPublish(); if (demandAvailable) { publisher.changeToDemandState(READING); } else { publisher.readingPaused(); if (publisher.changeState(READING, NO_DEMAND)) { // Demand may have arrived since readAndPublish returned long r = publisher.demand; if (r > 0) { publisher.changeToDemandState(NO_DEMAND); } } } } catch (IOException ex) { publisher.onError(ex); } } // Else, either competing onDataAvailable (request vs container), or concurrent completion } },
@Override <T> void onDataAvailable(AbstractListenerReadPublisher<T> publisher) { if (publisher.changeState(this, READING)) { try { boolean demandAvailable = publisher.readAndPublish(); if (demandAvailable) { publisher.changeToDemandState(READING); } else { publisher.readingPaused(); if (publisher.changeState(READING, NO_DEMAND)) { // Demand may have arrived since readAndPublish returned long r = publisher.demand; if (r > 0) { publisher.changeToDemandState(NO_DEMAND); } } } } catch (IOException ex) { publisher.onError(ex); } } // Else, either competing onDataAvailable (request vs container), or concurrent completion } },
@Override <T> void onDataAvailable(AbstractListenerReadPublisher<T> publisher) { if (publisher.changeState(this, READING)) { try { boolean demandAvailable = publisher.readAndPublish(); if (demandAvailable) { publisher.changeToDemandState(READING); } else { publisher.readingPaused(); if (publisher.changeState(READING, NO_DEMAND)) { // Demand may have arrived since readAndPublish returned long r = publisher.demand; if (r > 0) { publisher.changeToDemandState(NO_DEMAND); } } } } catch (IOException ex) { publisher.onError(ex); } } // Else, either competing onDataAvailable (request vs container), or concurrent completion } },