in src/main/java/com/amazonaws/transcribestreaming/FileByteToAudioEventSubscription.java [48:75]
public void request(long n) {
if (n <= 0) {
subscriber.onError(new IllegalArgumentException("Demand must be positive"));
}
demand.getAndAdd(n);
//We need to invoke this in a separate thread because the call to subscriber.onNext(...) is recursive
executor.submit(() -> {
try {
while (demand.get() > 0) {
ByteBuffer audioBuffer = getNextByteBuffer();
if (audioBuffer.remaining() > 0) {
AudioEvent audioEvent = audioEventFromBuffer(audioBuffer);
subscriber.onNext(audioEvent);
} else {
subscriber.onComplete();
break;
}
demand.getAndDecrement();
}
} catch (Exception e) {
subscriber.onError(e);
}
});
}