package com.google.devcoin.core; import org.jboss.netty.channel.*; import java.net.InetSocketAddress; import java.net.SocketAddress; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; public class FakeChannel extends AbstractChannel { final BlockingQueue<ChannelEvent> events = new ArrayBlockingQueue<ChannelEvent>(1000); private final ChannelConfig config; private SocketAddress localAddress; private SocketAddress remoteAddress; protected FakeChannel(ChannelFactory factory, ChannelPipeline pipeline, ChannelSink sink) { super(null, factory, pipeline, sink); config = new DefaultChannelConfig(); localAddress = new InetSocketAddress("127.0.0.1", 2000); } public ChannelConfig getConfig() { return config; } public SocketAddress getLocalAddress() { return localAddress; } public SocketAddress getRemoteAddress() { return remoteAddress; } @Override public ChannelFuture connect(SocketAddress remoteAddress) { this.remoteAddress = remoteAddress; return super.connect(remoteAddress); } public boolean isBound() { return true; } public boolean isConnected() { return true; } public ChannelEvent nextEvent() { return events.poll(); } public ChannelEvent nextEventBlocking() throws InterruptedException { return events.take(); } @Override public boolean setClosed() { return super.setClosed(); } }