X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsonitus%2Fio%2FRememberingInputStream.java;h=8c2e3e63bd74a16c8e9bd4f661c5523d618cf327;hb=63ea9b500c9fd9fe665c7fa15e75c6c8ebebe249;hp=ac2e5f050cf2a0e127ada2d6ee931001a247729a;hpb=73e0a751b87b2edbde70babe2e2578e139ba7ff8;p=sonitus.git diff --git a/src/main/java/net/pterodactylus/sonitus/io/RememberingInputStream.java b/src/main/java/net/pterodactylus/sonitus/io/RememberingInputStream.java index ac2e5f0..8c2e3e6 100644 --- a/src/main/java/net/pterodactylus/sonitus/io/RememberingInputStream.java +++ b/src/main/java/net/pterodactylus/sonitus/io/RememberingInputStream.java @@ -22,6 +22,7 @@ import java.io.ByteArrayOutputStream; import java.io.FilterInputStream; import java.io.IOException; import java.io.InputStream; +import java.io.SequenceInputStream; /** * Wrapper around an {@link InputStream} that remembers all bytes that have been @@ -51,12 +52,13 @@ public class RememberingInputStream extends FilterInputStream { // /** - * Returns all remembered bytes as an {@link InputStream}. + * Returns an input stream that repeats the originally wrapped stream, + * including all bytes that have already been read. * - * @return All remembered bytes + * @return A new input stream with the original content */ public InputStream remembered() { - return new ByteArrayInputStream(rememberBuffer.toByteArray()); + return new SequenceInputStream(new ByteArrayInputStream(rememberBuffer.toByteArray()), in); } // @@ -79,11 +81,7 @@ public class RememberingInputStream extends FilterInputStream { @Override public int read(byte[] bytes) throws IOException { - int read = super.read(bytes); - if (read != -1) { - rememberBuffer.write(bytes, 0, read); - } - return read; + return read(bytes, 0, bytes.length); } @Override