aboutsummaryrefslogtreecommitdiff
path: root/java/org/brotli/wrapper/dec/Decoder.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/org/brotli/wrapper/dec/Decoder.java')
-rw-r--r--java/org/brotli/wrapper/dec/Decoder.java10
1 files changed, 10 insertions, 0 deletions
diff --git a/java/org/brotli/wrapper/dec/Decoder.java b/java/org/brotli/wrapper/dec/Decoder.java
index 95060ae..0326403 100644
--- a/java/org/brotli/wrapper/dec/Decoder.java
+++ b/java/org/brotli/wrapper/dec/Decoder.java
@@ -19,6 +19,7 @@ public class Decoder {
private final DecoderJNI.Wrapper decoder;
ByteBuffer buffer;
boolean closed;
+ boolean eager;
/**
* Creates a Decoder wrapper.
@@ -47,6 +48,10 @@ public class Decoder {
throw new IOException(message);
}
+ public void setEager(boolean eager) {
+ this.eager = eager;
+ }
+
/**
* Continue decoding.
*
@@ -71,6 +76,11 @@ public class Decoder {
break;
case NEEDS_MORE_INPUT:
+ // In "eager" more pulling preempts pushing.
+ if (eager && decoder.hasOutput()) {
+ buffer = decoder.pull();
+ break;
+ }
ByteBuffer inputBuffer = decoder.getInputBuffer();
inputBuffer.clear();
int bytesRead = source.read(inputBuffer);