/** * {@inheritDoc} */ @Override public long skip(long n) throws IOException { if (pos >= length) { return -1; } if (pos + n >= length) { n = length - pos; } long skipped = queue.skip(n); pos += skipped; return skipped; }
/** * {@inheritDoc} */ @Override public long skip(long n) throws IOException { if (mark == null || mark.remaining() < n) { mark = null; if (length != -1) { if (pos >= length) { return -1; } if (pos + n >= length) { n = length - pos; } } long skipped = queue.skip(n); pos += skipped; return skipped; } int l = mark.limit(); int p = mark.position(); mark.limit(mark.position() + (int)n); queue.get(mark); int skipped = mark.position() - p; mark.limit(l); return skipped; }