X-Git-Url: http://git.nikiroo.be/?p=nikiroo-utils.git;a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Futils%2Fstreams%2FNextableInputStreamStep.java;fp=src%2Fbe%2Fnikiroo%2Futils%2Fstreams%2FNextableInputStreamStep.java;h=fda998d1ce8990abe48539293e9a7d84613d0cf8;hp=818abf5af730e8210d5151a12df0970758f694d3;hb=f743f2ca02a518a7e91ee6376bff28c68977f8da;hpb=23cf894daa02843da6e6f1b199eaaea29a739f81 diff --git a/src/be/nikiroo/utils/streams/NextableInputStreamStep.java b/src/be/nikiroo/utils/streams/NextableInputStreamStep.java index 818abf5..fda998d 100755 --- a/src/be/nikiroo/utils/streams/NextableInputStreamStep.java +++ b/src/be/nikiroo/utils/streams/NextableInputStreamStep.java @@ -9,9 +9,10 @@ import java.io.InputStream; */ public class NextableInputStreamStep { private int stopAt; - private int resumeLen; private int last = -1; - private int skip; + private int resumeLen; + private int resumeSkip; + private boolean resumeEof; /** * Create a new divider that will separate the sub-streams each time it sees @@ -43,17 +44,20 @@ public class NextableInputStreamStep { * @param len * the maximum index to use in the buffer (anything above that is * not to be used) + * @param eof + * the current state of the under-laying stream * * @return the index at which to stop, or -1 */ - public int stop(byte[] buffer, int pos, int len) { + public int stop(byte[] buffer, int pos, int len, boolean eof) { for (int i = pos; i < len; i++) { if (buffer[i] == stopAt) { if (i > this.last) { // we skip the sep - this.skip = 1; + this.resumeSkip = 1; this.resumeLen = len; + this.resumeEof = eof; this.last = i; return i; } @@ -65,7 +69,8 @@ public class NextableInputStreamStep { /** * Get the maximum index to use in the buffer used in - * {@link NextableInputStreamStep#stop(byte[], int, int)} at resume time. + * {@link NextableInputStreamStep#stop(byte[], int, int, boolean)} at resume + * time. * * @return the index */ @@ -79,18 +84,29 @@ public class NextableInputStreamStep { * @return the number of bytes to skip */ public int getResumeSkip() { - return skip; + return resumeSkip; + } + + /** + * Get the under-laying stream state at resume time. + * + * @return the EOF state + */ + public boolean getResumeEof() { + return resumeEof; } /** * Clear the information we may have kept about the current buffer *

* You should call this method each time you change the content of the - * buffer used in {@link NextableInputStreamStep#stop(byte[], int, int)}. + * buffer used in + * {@link NextableInputStreamStep#stop(byte[], int, int, boolean)}. */ public void clearBuffer() { this.last = -1; - this.skip = 0; + this.resumeSkip = 0; this.resumeLen = 0; + this.resumeEof = false; } }