package com.limegroup.gnutella.io; import java.io.IOException; import java.nio.ByteBuffer; public abstract class ChannelInterestReadAdapter implements ChannelReadObserver, InterestScatteringByteChannel { protected ByteBuffer buffer; protected InterestReadChannel source; protected boolean shutdown; public ChannelInterestReadAdapter() { buffer = ByteBuffer.allocate(getBufferSize()); } protected abstract int getBufferSize(); public int read(ByteBuffer dst) { return BufferUtils.transfer(buffer, dst); } public long read(ByteBuffer []dest, int offset, int length) { return BufferUtils.transfer(buffer, dest, offset, length); } public long read(ByteBuffer []dest) { return read(dest,0,dest.length); } public void shutdown() { shutdown = true; } public InterestReadChannel getReadChannel() { return source; } public void setReadChannel(InterestReadChannel newChannel) { this.source = newChannel; } public void interest(boolean status) { source.interest(status); } public void close() throws IOException { source.close(); } public boolean isOpen() { return source.isOpen(); } public void handleIOException(IOException iox) {} }