java.nio.channels.Selector.keys()方法的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(7.4k)|赞(0)|评价(0)|浏览(206)

本文整理了Java中java.nio.channels.Selector.keys()方法的一些代码示例,展示了Selector.keys()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Selector.keys()方法的具体详情如下:
包路径:java.nio.channels.Selector
类名称:Selector
方法名:keys

Selector.keys介绍

[英]Gets the set of registered keys. The set is immutable and is not thread- safe.
[中]获取注册密钥集。集合是不可变的,并且不是线程安全的。

代码示例

代码示例来源:origin: org.mongodb/mongo-java-driver

  1. private void processPendingInterests() {
  2. for (SelectionKey key : selector.keys()) {
  3. RegisteredSocket socket = (RegisteredSocket) key.attachment();
  4. int pending = socket.pendingOps.getAndSet(0);
  5. if (pending != 0) {
  6. key.interestOps(key.interestOps() | pending);
  7. }
  8. }
  9. }

代码示例来源:origin: apache/hbase

  1. /**
  2. * If there were some calls that have not been sent out for a long time, we close the connection.
  3. * @return the time of the purge.
  4. */
  5. private long purge(long lastPurgeTime) {
  6. long now = System.currentTimeMillis();
  7. if (now < lastPurgeTime + this.simpleRpcServer.purgeTimeout) {
  8. return lastPurgeTime;
  9. }
  10. ArrayList<SimpleServerRpcConnection> conWithOldCalls = new ArrayList<>();
  11. // get the list of channels from list of keys.
  12. synchronized (writeSelector.keys()) {
  13. for (SelectionKey key : writeSelector.keys()) {
  14. SimpleServerRpcConnection connection = (SimpleServerRpcConnection) key.attachment();
  15. if (connection == null) {
  16. throw new IllegalStateException("Coding error: SelectionKey key without attachment.");
  17. }
  18. if (connection.lastSentTime > 0 &&
  19. now > connection.lastSentTime + this.simpleRpcServer.purgeTimeout) {
  20. conWithOldCalls.add(connection);
  21. }
  22. }
  23. }
  24. // Seems safer to close the connection outside of the synchronized loop...
  25. for (SimpleServerRpcConnection connection : conWithOldCalls) {
  26. this.simpleRpcServer.closeConnection(connection);
  27. }
  28. return now;
  29. }

代码示例来源:origin: netty/netty

  1. private void closeAll() {
  2. selectAgain();
  3. Set<SelectionKey> keys = selector.keys();
  4. Collection<AbstractNioChannel> channels = new ArrayList<AbstractNioChannel>(keys.size());
  5. for (SelectionKey k: keys) {
  6. Object a = k.attachment();
  7. if (a instanceof AbstractNioChannel) {
  8. channels.add((AbstractNioChannel) a);
  9. } else {
  10. k.cancel();
  11. @SuppressWarnings("unchecked")
  12. NioTask<SelectableChannel> task = (NioTask<SelectableChannel>) a;
  13. invokeChannelUnregistered(task, k, null);
  14. }
  15. }
  16. for (AbstractNioChannel ch: channels) {
  17. ch.unsafe().close(ch.unsafe().voidPromise());
  18. }
  19. }

代码示例来源:origin: voldemort/voldemort

  1. for(SelectionKey sk: selector.keys()) {
  2. try {
  3. if(logger.isTraceEnabled())
  4. Object attachment = sk.attachment();
  5. if(attachment instanceof Closeable) {
  6. IOUtils.closeQuietly((Closeable) attachment);

代码示例来源:origin: redisson/redisson

  1. private void closeAll() {
  2. selectAgain();
  3. Set<SelectionKey> keys = selector.keys();
  4. Collection<AbstractNioChannel> channels = new ArrayList<AbstractNioChannel>(keys.size());
  5. for (SelectionKey k: keys) {
  6. Object a = k.attachment();
  7. if (a instanceof AbstractNioChannel) {
  8. channels.add((AbstractNioChannel) a);
  9. } else {
  10. k.cancel();
  11. @SuppressWarnings("unchecked")
  12. NioTask<SelectableChannel> task = (NioTask<SelectableChannel>) a;
  13. invokeChannelUnregistered(task, k, null);
  14. }
  15. }
  16. for (AbstractNioChannel ch: channels) {
  17. ch.unsafe().close(ch.unsafe().voidPromise());
  18. }
  19. }

代码示例来源:origin: kilim/kilim

  1. try {
  2. if (!running) {
  3. Iterator<SelectionKey> it = sel.keys().iterator();
  4. while (it.hasNext()) {
  5. SelectionKey sk = it.next();
  6. sk.cancel();
  7. Object o = sk.attachment();
  8. if (o instanceof SockEvent && ((SockEvent)o).ch instanceof ServerSocketChannel) {
  9. SelectionKey sk = it.next();
  10. it.remove();
  11. Object o = sk.attachment();
  12. sk.interestOps(0);
  13. assert(o instanceof SockEvent);

代码示例来源:origin: apache/nifi

  1. public void shutdown(final long period, final TimeUnit timeUnit) {
  2. channelDispatcher.stop();
  3. for (SelectionKey selectionKey : socketChannelSelector.keys()) {
  4. final AbstractChannelReader reader = (AbstractChannelReader) selectionKey.attachment();
  5. selectionKey.cancel();
  6. if (reader != null) {
  7. for (SelectionKey selectionKey : serverSocketSelector.keys()) {
  8. selectionKey.cancel();
  9. IOUtils.closeQuietly(selectionKey.channel());

代码示例来源:origin: voldemort/voldemort

  1. Iterator<SelectionKey> i = selector.keys().iterator();
  2. ClientRequestExecutor clientRequestExecutor = (ClientRequestExecutor) selectionKey.attachment();

代码示例来源:origin: org.apache.hadoop/hadoop-common

  1. RpcCall call = (RpcCall)key.attachment();
  2. if (call != null) {
  3. LOG.info(Thread.currentThread().getName() +
  4. synchronized (writeSelector.keys()) {
  5. calls = new ArrayList<RpcCall>(writeSelector.keys().size());
  6. iter = writeSelector.keys().iterator();
  7. while (iter.hasNext()) {
  8. SelectionKey key = iter.next();
  9. RpcCall call = (RpcCall)key.attachment();
  10. if (call != null && key.channel() == call.connection.channel) {
  11. calls.add(call);

代码示例来源:origin: wildfly/wildfly

  1. private void closeAll() {
  2. selectAgain();
  3. Set<SelectionKey> keys = selector.keys();
  4. Collection<AbstractNioChannel> channels = new ArrayList<AbstractNioChannel>(keys.size());
  5. for (SelectionKey k: keys) {
  6. Object a = k.attachment();
  7. if (a instanceof AbstractNioChannel) {
  8. channels.add((AbstractNioChannel) a);
  9. } else {
  10. k.cancel();
  11. @SuppressWarnings("unchecked")
  12. NioTask<SelectableChannel> task = (NioTask<SelectableChannel>) a;
  13. invokeChannelUnregistered(task, k, null);
  14. }
  15. }
  16. for (AbstractNioChannel ch: channels) {
  17. ch.unsafe().close(ch.unsafe().voidPromise());
  18. }
  19. }

代码示例来源:origin: apache/activemq

  1. i.remove();
  2. final SelectorSelection s = (SelectorSelection) key.attachment();
  3. try {
  4. if (key.isValid()) {
  5. e.printStackTrace();
  6. Set<SelectionKey> keys = selector.keys();
  7. for (Iterator<SelectionKey> i = keys.iterator(); i.hasNext();) {
  8. SelectionKey key = i.next();
  9. SelectorSelection s = (SelectorSelection) key.attachment();
  10. s.onError(e);

代码示例来源:origin: org.mongodb/mongo-java-driver

  1. RegisteredSocket socket = (RegisteredSocket) key.attachment();
  2. processRead(socket);
  3. processWrite(socket);
  4. for (SelectionKey key : selector.keys()) {
  5. RegisteredSocket socket = (RegisteredSocket) key.attachment();
  6. socket.close();

代码示例来源:origin: netty/netty

  1. for (SelectionKey key: oldSelector.keys()) {
  2. Object a = key.attachment();
  3. try {
  4. if (!key.isValid() || key.channel().keyFor(newSelectorTuple.unwrappedSelector) != null) {

代码示例来源:origin: apache/zookeeper

  1. for (SelectionKey key : selector.keys()) {
  2. NIOServerCnxn cnxn = (NIOServerCnxn) key.attachment();
  3. if (cnxn.isSelectable()) {
  4. cnxn.close();

代码示例来源:origin: ltsopensource/light-task-scheduler

  1. for (; ; ) {
  2. try {
  3. for (SelectionKey key : oldSelector.keys()) {
  4. Object a = key.attachment();
  5. try {
  6. if (key.channel().keyFor(newSelector) != null) {

代码示例来源:origin: ltsopensource/light-task-scheduler

  1. for (; ; ) {
  2. try {
  3. for (SelectionKey key : oldSelector.keys()) {
  4. Object a = key.attachment();
  5. try {
  6. if (key.channel().keyFor(newSelector) != null) {

代码示例来源:origin: redisson/redisson

  1. for (SelectionKey key: oldSelector.keys()) {
  2. Object a = key.attachment();
  3. try {
  4. if (!key.isValid() || key.channel().keyFor(newSelectorTuple.unwrappedSelector) != null) {

代码示例来源:origin: io.netty/netty

  1. for (;;) {
  2. try {
  3. for (SelectionKey key: oldSelector.keys()) {
  4. try {
  5. if (key.channel().keyFor(newSelector) != null) {
  6. key.channel().register(newSelector, interestOps, key.attachment());
  7. nChannels ++;
  8. } catch (Exception e) {

代码示例来源:origin: apache/geode

  1. Iterator it = (new ArrayList(this.selector.keys())).iterator();
  2. while (it.hasNext()) {
  3. SelectionKey sk = (SelectionKey) it.next();
  4. ServerConnection sc = (ServerConnection) sk.attachment();
  5. if (sc == null) {
  6. continue;

代码示例来源:origin: wildfly/wildfly

  1. if ((oldState & SHUTDOWN) != 0) {
  2. synchronized (lock) {
  3. keyCount = selector.keys().size();
  4. state = keyCount | SHUTDOWN;
  5. if (keyCount == 0 && workQueue.isEmpty()) {
  6. final Set<SelectionKey> keySet = selector.keys();
  7. synchronized (keySet) {
  8. keys = keySet.toArray(keys);
  9. if (key == null) break; //end of list
  10. keys[i] = null;
  11. final NioHandle attachment = (NioHandle) key.attachment();
  12. if (attachment != null) {
  13. safeClose(key.channel());
  14. if (ops != 0) {
  15. selectorLog.tracef("Selected key %s for %s", key, key.channel());
  16. final NioHandle handle = (NioHandle) key.attachment();
  17. if (handle == null) {
  18. cancelKey(key, false);

相关文章