/** * */ package org.limewire.nio; import java.nio.channels.CancelledKeyException; import java.nio.channels.SelectableChannel; import java.nio.channels.SelectionKey; import java.nio.channels.Selector; class StubSelectionKey extends SelectionKey { private volatile int interestOps = 0; private int readyOps = 0; private volatile boolean valid = true; private SelectableChannel channel; private Selector selector; StubSelectionKey(Selector selector, SelectableChannel channel, int ops, Object attachment) { this.selector = selector; this.channel = channel; this.interestOps = ops; attach(attachment); } void setReadyOps(int ops) { this.readyOps = ops; } @Override public void cancel() { valid = false; } @Override public SelectableChannel channel() { return channel; } @Override public int interestOps() { return interestOps; } @Override public SelectionKey interestOps(int ops) { if(!valid) throw new CancelledKeyException(); this.interestOps = ops; return this; } @Override public boolean isValid() { return valid; } @Override public int readyOps() { if(!valid) throw new CancelledKeyException(); return readyOps; } @Override public Selector selector() { return selector; } }