diff rep/channel/REPSelector.java @ 240:168dd841be51 iterator-bug-fig **INVALID**

selected key Interator fix.
author kono
date Sun, 31 Aug 2008 20:39:06 +0900
parents 13e0520470dc
children
line wrap: on
line diff
--- a/rep/channel/REPSelector.java	Sun Aug 31 19:49:35 2008 +0900
+++ b/rep/channel/REPSelector.java	Sun Aug 31 20:39:06 2008 +0900
@@ -8,6 +8,7 @@
 import java.nio.channels.spi.AbstractSelector;
 import java.nio.channels.spi.SelectorProvider;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.Set;
 
 
@@ -77,9 +78,13 @@
 
 	public Set<REPSelectionKey<P>> selectedKeys1() {
 		Set<SelectionKey> keys = selector.selectedKeys();
+		//System.err.println("Selected keys = "+keys);
 		HashSet<REPSelectionKey<P>> newKeys = new HashSet<REPSelectionKey<P>>();
-		for(SelectionKey k: keys) {
+
+	    for (Iterator<SelectionKey> it = keys.iterator();it.hasNext(); ) {
+	        SelectionKey k = it.next();
 			newKeys.add(new REPSelectionKey<P>(k,this));
+	        it.remove();
 		}
 		return newKeys;
 	}