package com.limegroup.gnutella.io; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.SocketChannel; public class StubReadObserver implements ReadObserver, ReadTimeout { private long readTimeout = 0; private boolean shutdown = false; private IOException iox; private SocketChannel channel; private int readsHandled; private ByteBuffer buffer; public void setChannel(SocketChannel channel) { this.channel = channel; } public SocketChannel getChannel() throws IOException { if(channel == null) { channel = SocketChannel.open(); channel.configureBlocking(false); } return channel; } public IOException getIox() { return iox; } public int getReadsHandled() { return readsHandled; } public boolean isShutdown() { return shutdown; } public void setReadTimeout(long readTimeout) { this.readTimeout = readTimeout; } public void handleRead() throws IOException { readsHandled++; if(buffer == null) buffer = ByteBuffer.allocate(1024); while(buffer.hasRemaining() && channel.read(buffer) != 0); } public synchronized void handleIOException(IOException iox) { this.iox = iox; notify(); } public void shutdown() { shutdown = true; } public long getReadTimeout() { return readTimeout; } public synchronized void waitForIOException(long waitTime) throws InterruptedException { wait(waitTime); } }