You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by re...@apache.org on 2009/10/13 11:33:32 UTC
svn commit: r824652 -
/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/common/org/apache/harmony/nio/internal/SelectorImpl.java
Author: regisxu
Date: Tue Oct 13 09:33:31 2009
New Revision: 824652
URL: http://svn.apache.org/viewvc?rev=824652&view=rev
Log:
revert r824625 which is incorrect and apply new fix of countdown "selected" if selected keys are canncelled.
Modified:
harmony/enhanced/classlib/trunk/modules/nio/src/main/java/common/org/apache/harmony/nio/internal/SelectorImpl.java
Modified: harmony/enhanced/classlib/trunk/modules/nio/src/main/java/common/org/apache/harmony/nio/internal/SelectorImpl.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/nio/src/main/java/common/org/apache/harmony/nio/internal/SelectorImpl.java?rev=824652&r1=824651&r2=824652&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/nio/src/main/java/common/org/apache/harmony/nio/internal/SelectorImpl.java (original)
+++ harmony/enhanced/classlib/trunk/modules/nio/src/main/java/common/org/apache/harmony/nio/internal/SelectorImpl.java Tue Oct 13 09:33:31 2009
@@ -494,12 +494,23 @@
Arrays.fill(flags, 0);
- doCancel();
-
- if (selected != 0) {
- return selectedKeys.size();
+ Set<SelectionKey> cancelledKeys = cancelledKeys();
+ synchronized (cancelledKeys) {
+ if (cancelledKeys.size() > 0) {
+ for (SelectionKey currentkey : cancelledKeys) {
+ delKey(currentkey);
+ mutableKeys.remove(currentkey);
+ deregister((AbstractSelectionKey) currentkey);
+ if (mutableSelectedKeys.remove(currentkey)) {
+ selected--;
+ }
+ }
+ cancelledKeys.clear();
+ }
+ limitCapacity();
}
- return 0;
+
+ return selected;
}
}
}