Пример #1
0
 public void reset() {
   if (readMode == ReadMode.RETAIN_AFTER_READING) {
     readIterator = null;
     prepareRetainAfterReading();
     if (currentWriteChunk != null) {
       currentWriteChunk.reset();
     }
   }
 }
Пример #2
0
 protected int prepareRead() {
   prepareRetainAfterReading();
   int bytesUnread = (currentReadChunk != null) ? currentReadChunk.bytesUnread() : 0;
   if (bytesUnread == 0) {
     if (readMode == ReadMode.REMOVE_AFTER_READING && !chunks.isEmpty()) {
       currentReadChunk = chunks.removeFirst();
       bytesUnread = currentReadChunk.bytesUnread();
       totalBytesUnreadInList -= bytesUnread;
     } else if (readMode == ReadMode.RETAIN_AFTER_READING && readIterator.hasNext()) {
       currentReadChunk = readIterator.next();
       currentReadChunk.reset();
       bytesUnread = currentReadChunk.bytesUnread();
       totalBytesUnreadInIterator -= bytesUnread;
     } else if (currentReadChunk != currentWriteChunk) {
       currentReadChunk = currentWriteChunk;
       bytesUnread = currentReadChunk.bytesUnread();
     } else {
       bytesUnread = -1;
     }
   }
   return bytesUnread;
 }