Wire log to include I/O errors and end of stream

git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1570140 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Oleg Kalnichevski 2014-02-20 10:52:59 +00:00
parent 22d2c89b55
commit 3826597f1a
3 changed files with 85 additions and 32 deletions

View File

@ -51,48 +51,79 @@ class LoggingInputStream extends InputStream {
@Override
public int read() throws IOException {
final int b = in.read();
if (b != -1) {
wire.input(b);
try {
final int b = in.read();
if (b == -1) {
wire.input("end of stream");
} else {
wire.input(b);
}
return b;
} catch (IOException ex) {
wire.input("I/O error: " + ex.getMessage());
throw ex;
}
return b;
}
@Override
public int read(final byte[] b) throws IOException {
final int bytesRead = in.read(b);
if (bytesRead != -1) {
wire.input(b, 0, bytesRead);
try {
final int bytesRead = in.read(b);
if (bytesRead == -1) {
wire.input("end of stream");
} else if (bytesRead > 0) {
wire.input(b, 0, bytesRead);
}
return bytesRead;
} catch (IOException ex) {
wire.input("I/O error: " + ex.getMessage());
throw ex;
}
return bytesRead;
}
@Override
public int read(final byte[] b, final int off, final int len) throws IOException {
final int bytesRead = in.read(b, off, len);
if (bytesRead != -1) {
wire.input(b, off, bytesRead);
try {
final int bytesRead = in.read(b, off, len);
if (bytesRead == -1) {
wire.input("end of stream");
} else if (bytesRead > 0) {
wire.input(b, off, bytesRead);
}
return bytesRead;
} catch (IOException ex) {
wire.input("I/O error: " + ex.getMessage());
throw ex;
}
return bytesRead;
}
@Override
public long skip(final long n) throws IOException {
return super.skip(n);
try {
return super.skip(n);
} catch (IOException ex) {
wire.input("I/O error: " + ex.getMessage());
throw ex;
}
}
@Override
public int available() throws IOException {
return in.available();
try {
return in.available();
} catch (IOException ex) {
wire.input("I/O error: " + ex.getMessage());
throw ex;
}
}
@Override
public synchronized void mark(final int readlimit) {
public void mark(final int readlimit) {
super.mark(readlimit);
}
@Override
public synchronized void reset() throws IOException {
public void reset() throws IOException {
super.reset();
}
@ -103,7 +134,12 @@ class LoggingInputStream extends InputStream {
@Override
public void close() throws IOException {
in.close();
try {
in.close();
} catch (IOException ex) {
wire.input("I/O error: " + ex.getMessage());
throw ex;
}
}
}

View File

@ -51,29 +51,54 @@ class LoggingOutputStream extends OutputStream {
@Override
public void write(final int b) throws IOException {
wire.output(b);
try {
wire.output(b);
} catch (IOException ex) {
wire.input("I/O error: " + ex.getMessage());
throw ex;
}
}
@Override
public void write(final byte[] b) throws IOException {
wire.output(b);
out.write(b);
try {
wire.output(b);
out.write(b);
} catch (IOException ex) {
wire.input("I/O error: " + ex.getMessage());
throw ex;
}
}
@Override
public void write(final byte[] b, final int off, final int len) throws IOException {
wire.output(b, off, len);
out.write(b, off, len);
try {
wire.output(b, off, len);
out.write(b, off, len);
} catch (IOException ex) {
wire.input("I/O error: " + ex.getMessage());
throw ex;
}
}
@Override
public void flush() throws IOException {
out.flush();
try {
out.flush();
} catch (IOException ex) {
wire.input("I/O error: " + ex.getMessage());
throw ex;
}
}
@Override
public void close() throws IOException {
out.close();
try {
out.close();
} catch (IOException ex) {
wire.input("I/O error: " + ex.getMessage());
throw ex;
}
}
}

View File

@ -138,20 +138,12 @@ public class Wire {
input(new byte[] {(byte) b});
}
/**
* @deprecated (4.1) do not use
*/
@Deprecated
public void output(final String s)
throws IOException {
Args.notNull(s, "Output");
output(s.getBytes());
}
/**
* @deprecated (4.1) do not use
*/
@Deprecated
public void input(final String s)
throws IOException {
Args.notNull(s, "Input");