1e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrompackage org.bouncycastle.util.io; 2e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 3e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport java.io.IOException; 4e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport java.io.InputStream; 5e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport java.io.OutputStream; 6e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 7e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrompublic class TeeInputStream 8e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom extends InputStream 9e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom{ 10e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom private final InputStream input; 11e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom private final OutputStream output; 12e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 13e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom public TeeInputStream(InputStream input, OutputStream output) 14e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 15e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom this.input = input; 16e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom this.output = output; 17e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 18e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 19e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom public int read(byte[] buf) 20e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom throws IOException 21e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 22e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom return read(buf, 0, buf.length); 23e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 24e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 25e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom public int read(byte[] buf, int off, int len) 26e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom throws IOException 27e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 28e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom int i = input.read(buf, off, len); 29e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 30e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom if (i > 0) 31e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 32e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom output.write(buf, off, i); 33e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 34e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 35e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom return i; 36e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 37e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 38e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom public int read() 39e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom throws IOException 40e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 41e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom int i = input.read(); 42e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 43e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom if (i >= 0) 44e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 45e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom output.write(i); 46e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 47e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 48e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom return i; 49e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 50e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 51e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom public void close() 52e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom throws IOException 53e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 54e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom this.input.close(); 55e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom this.output.close(); 56e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 57e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 58e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom public OutputStream getOutputStream() 59e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 60e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom return output; 61e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 62e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom} 63