blob: 91e990db8dd967a9fdf9e600d6e9786dfd8c1bd9 [file] [log] [blame]
package com.squareup.okhttp.internal;
import java.io.IOException;
import okio.Buffer;
import okio.ForwardingSink;
import okio.Sink;
/** A sink that never throws IOExceptions, even if the underlying sink does. */
class FaultHidingSink extends ForwardingSink {
private boolean hasErrors;
public FaultHidingSink(Sink delegate) {
super(delegate);
}
@Override public void write(Buffer source, long byteCount) throws IOException {
if (hasErrors) {
source.skip(byteCount);
return;
}
try {
super.write(source, byteCount);
} catch (IOException e) {
hasErrors = true;
onException(e);
}
}
@Override public void flush() throws IOException {
if (hasErrors) return;
try {
super.flush();
} catch (IOException e) {
hasErrors = true;
onException(e);
}
}
@Override public void close() throws IOException {
if (hasErrors) return;
try {
super.close();
} catch (IOException e) {
hasErrors = true;
onException(e);
}
}
protected void onException(IOException e) {
}
}