本文整理汇总了Java中java.nio.channels.SocketChannel.keyFor方法的典型用法代码示例。如果您正苦于以下问题:Java SocketChannel.keyFor方法的具体用法?Java SocketChannel.keyFor怎么用?Java SocketChannel.keyFor使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类java.nio.channels.SocketChannel
的用法示例。
在下文中一共展示了SocketChannel.keyFor方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: getConnectionRequest
import java.nio.channels.SocketChannel; //导入方法依赖的package包/类
/**
* {@inheritDoc}
*/
@Override
protected ConnectionRequest getConnectionRequest(SocketChannel handle) {
SelectionKey key = handle.keyFor(selector);
if ((key == null) || (!key.isValid())) {
return null;
}
return (ConnectionRequest) key.attachment();
}
示例2: close
import java.nio.channels.SocketChannel; //导入方法依赖的package包/类
/**
* {@inheritDoc}
*/
@Override
protected void close(SocketChannel handle) throws Exception {
SelectionKey key = handle.keyFor(selector);
if (key != null) {
key.cancel();
}
handle.close();
}
示例3: finishConnect
import java.nio.channels.SocketChannel; //导入方法依赖的package包/类
/**
* {@inheritDoc}
*/
@Override
protected boolean finishConnect(SocketChannel handle) throws Exception {
if (handle.finishConnect()) {
SelectionKey key = handle.keyFor(selector);
if (key != null) {
key.cancel();
}
return true;
}
return false;
}
示例4: remove
import java.nio.channels.SocketChannel; //导入方法依赖的package包/类
public void remove(final KeyAttachment key, final int ops) {
Runnable r = new Runnable() {
@Override
public void run() {
if ( key == null ) return;
NioChannel nch = key.getChannel();
if ( nch == null ) return;
SocketChannel ch = nch.getIOChannel();
if ( ch == null ) return;
SelectionKey sk = ch.keyFor(selector);
try {
if (sk == null) {
if (SelectionKey.OP_WRITE==(ops&SelectionKey.OP_WRITE)) countDown(key.getWriteLatch());
if (SelectionKey.OP_READ==(ops&SelectionKey.OP_READ))countDown(key.getReadLatch());
} else {
if (sk.isValid()) {
sk.interestOps(sk.interestOps() & (~ops));
if (SelectionKey.OP_WRITE==(ops&SelectionKey.OP_WRITE)) countDown(key.getWriteLatch());
if (SelectionKey.OP_READ==(ops&SelectionKey.OP_READ))countDown(key.getReadLatch());
if (sk.interestOps()==0) {
sk.cancel();
sk.attach(null);
}
}else {
sk.cancel();
sk.attach(null);
}
}
}catch (CancelledKeyException cx) {
if (sk!=null) {
sk.cancel();
sk.attach(null);
}
}
}
};
events.offer(r);
wakeup();
}
示例5: cancel
import java.nio.channels.SocketChannel; //导入方法依赖的package包/类
synchronized void cancel(SocketChannel e) {
SelectionKey key = e.keyFor(selector);
if (key != null) {
key.cancel();
}
selector.wakeup();
}
示例6: remove
import java.nio.channels.SocketChannel; //导入方法依赖的package包/类
public void remove(final KeyAttachment key, final int ops) {
Runnable r = new Runnable() {
@Override
public void run() {
if (key == null)
return;
NioChannel nch = key.getChannel();
if (nch == null)
return;
SocketChannel ch = nch.getIOChannel();
if (ch == null)
return;
SelectionKey sk = ch.keyFor(selector);
try {
if (sk == null) {
if (SelectionKey.OP_WRITE == (ops & SelectionKey.OP_WRITE))
countDown(key.getWriteLatch());
if (SelectionKey.OP_READ == (ops & SelectionKey.OP_READ))
countDown(key.getReadLatch());
} else {
if (sk.isValid()) {
sk.interestOps(sk.interestOps() & (~ops));
if (SelectionKey.OP_WRITE == (ops & SelectionKey.OP_WRITE))
countDown(key.getWriteLatch());
if (SelectionKey.OP_READ == (ops & SelectionKey.OP_READ))
countDown(key.getReadLatch());
if (sk.interestOps() == 0) {
sk.cancel();
sk.attach(null);
}
} else {
sk.cancel();
sk.attach(null);
}
}
} catch (CancelledKeyException cx) {
if (sk != null) {
sk.cancel();
sk.attach(null);
}
}
}
};
events.offer(r);
wakeup();
}