package jxm.JWS;
import javax.net.ssl.SSLException;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.ByteChannel;
import java.nio.channels.SocketChannel;
public class AbstractWrappedByteChannel implements WrappedByteChannel {
private final ByteChannel channel;
public AbstractWrappedByteChannel(ByteChannel towrap) {
this.channel = towrap;
}
public AbstractWrappedByteChannel(WrappedByteChannel towrap) {
this.channel = towrap;
}
@Override
public int read(ByteBuffer dst) throws IOException {
return channel.read(dst);
}
@Override
public boolean isOpen() {
return channel.isOpen();
}
@Override
public void close() throws IOException {
channel.close();
}
@Override
public int write(ByteBuffer src) throws IOException {
return channel.write(src);
}
@Override
public boolean isNeedWrite() {
return channel instanceof WrappedByteChannel ? ((WrappedByteChannel) channel).isNeedWrite() : false;
}
@Override
public void writeMore() throws IOException {
if (channel instanceof WrappedByteChannel)
((WrappedByteChannel) channel).writeMore();
}
@Override
public boolean isNeedRead() {
return channel instanceof WrappedByteChannel ? ((WrappedByteChannel) channel).isNeedRead() : false;
}
@Override
public int readMore(ByteBuffer dst) throws SSLException {
return channel instanceof WrappedByteChannel ? ((WrappedByteChannel) channel).readMore(dst) : 0;
}
@Override
public boolean isBlocking() {
if (channel instanceof SocketChannel)
return ((SocketChannel) channel).isBlocking();
else if (channel instanceof WrappedByteChannel)
return ((WrappedByteChannel) channel).isBlocking();
return false;
}
}