/*
* ====================================================================
* Copyright (c) 2004-2012 TMate Software Ltd. All rights reserved.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at http://svnkit.com/license.html
* If newer versions of this license are posted there, you may use a
* newer version instead, at your option.
* ====================================================================
*/
package org.tmatesoft.svn.core.internal.util;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
/**
* @version 1.3
* @author TMate Software Ltd.
*/
public class SVNLogInputStream extends InputStream {
private OutputStream myLog;
private InputStream myIn;
public SVNLogInputStream(InputStream in, OutputStream log) {
myIn = in;
myLog = log;
}
public long skip(long n) throws IOException {
return myIn.skip(n);
}
public void close() throws IOException {
try {
myIn.close();
} catch (IOException e) {
throw e;
} finally {
try {
if (myLog != null) {
myLog.close();
}
} catch (IOException e) {
}
}
}
public int read(byte[] b, int off, int len) throws IOException {
int read;
try {
read = myIn.read(b, off, len);
if (read > 0) {
try {
if (myLog != null) {
myLog.write(b, off, read);
}
} catch (IOException e) {
}
}
} catch (IOException e) {
throw e;
}
return read;
}
public int read() throws IOException {
int read;
try {
read = myIn.read();
try {
if (read >= 0 && myLog != null) {
myLog.write(read & 0xFF);
}
} catch (IOException e) {
}
} catch (IOException e) {
throw e;
}
return read;
}
public void flushBuffer() {
try {
if (myLog != null) {
myLog.flush();
}
} catch (IOException e) {
}
}
}