@Override void request(AbstractRequestBodyPublisher publisher, long n) { if (BackpressureUtils.checkRequest(n, publisher.subscriber)) { BackpressureUtils.addAndGet(publisher.demand, n); if (publisher.changeState(this, DEMAND)) { publisher.checkOnDataAvailable(); } } }
@Override void onDataAvailable(AbstractRequestBodyPublisher publisher) { if (publisher.changeState(this, READING)) { try { boolean demandAvailable = publisher.readAndPublish(); if (demandAvailable) { publisher.changeState(READING, DEMAND); publisher.checkOnDataAvailable(); } else { publisher.changeState(READING, NO_DEMAND); } } catch (IOException ex) { publisher.onError(ex); } } }