本文整理匯總了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();
}