reads and publishes data buffers from the input . continues till either there is no more demand , or till there is no more data to be read . concode_field_sep Subscriber<? super DataBuffer> subscriber concode_elem_sep Log logger concode_elem_sep AtomicReference<State> state concode_elem_sep AbstractRequestBodyPublisher publisher concode_elem_sep AtomicLong demand concode_field_sep void cancel concode_elem_sep void cancel concode_elem_sep void cancel concode_elem_sep void request concode_elem_sep void request concode_elem_sep void request concode_elem_sep void request concode_elem_sep void request concode_elem_sep boolean hasDemand concode_elem_sep void onError concode_elem_sep void onError concode_elem_sep void onError concode_elem_sep DataBuffer read concode_elem_sep void checkOnDataAvailable concode_elem_sep void subscribe concode_elem_sep void subscribe concode_elem_sep void subscribe concode_elem_sep void onDataAvailable concode_elem_sep void onDataAvailable concode_elem_sep void onDataAvailable concode_elem_sep boolean changeState concode_elem_sep AbstractRequestBodyPublisher.State state concode_elem_sep void onAllDataRead concode_elem_sep void onAllDataRead concode_elem_sep void onAllDataRead
boolean function ( ) { while ( hasDemand ( ) ) { DataBuffer loc0 = read ( ) ; if ( loc0 != null ) { BackpressureUtils . getAndSub ( this . demand , 1L ) ; this . subscriber . onNext ( loc0 ) ; } else { return true ; } } return false ; }