Update of /cvsroot/freenet/freenet/src/freenet/transport
In directory sc8-pr-cvs1:/tmp/cvs-serv14994/src/freenet/transport

Modified Files:
        AbstractSelectorLoop.java 
Log Message:
reworked closing

Index: AbstractSelectorLoop.java
===================================================================
RCS file: /cvsroot/freenet/freenet/src/freenet/transport/AbstractSelectorLoop.java,v
retrieving revision 1.70
retrieving revision 1.71
diff -u -r1.70 -r1.71
--- AbstractSelectorLoop.java   23 Aug 2003 15:50:56 -0000      1.70
+++ AbstractSelectorLoop.java   29 Aug 2003 16:38:51 -0000      1.71
@@ -226,6 +226,9 @@
        }
        
        protected abstract int myKeyOps();
+       public SelectionKey keyFor(SelectableChannel ch) {
+               return ch.keyFor(sel);
+       }
        
        /**
         * register/unregister waiters in the queues
@@ -403,25 +406,30 @@
        {
                
                synchronized(closeQueue) {
-                       LinkedList skippedQueue = new LinkedList();
+                       
                        synchronized(preCloseQueueObject) {
                                //boolean wasEmpty = closeQueue.isEmpty();
                                //boolean itemAdded = false;
                                while(!preCloseQueue.isEmpty()) {
                                        ClosePair current = 
(ClosePair)preCloseQueue.removeFirst();
-                                       if (current.sc != null && 
current.sc.keyFor(sel) != null) {
-                                               current.sc.keyFor(sel).cancel();
-                                               closeQueue.addLast(current);
-                                       } else
-                                               skippedQueue.add(current);
+                                       if (current.sc != null)
+                                               if 
(tcpConnection.getRSL().keyFor(current.sc)!=null) {
+                                                       
tcpConnection.getRSL().keyFor(current.sc).cancel();
+                                                       closeQueue.addLast(current);
+                                               } else 
+                                               if 
(tcpConnection.getWSL().keyFor(current.sc)!=null) {
+                                                       
tcpConnection.getWSL().keyFor(current.sc).cancel();
+                                                       closeQueue.addLast(current);
+                                               } else 
+                                                       closeQueue.addLast(current); 
//key is not registered anywhere?
+                               } 
                                //      itemAdded = true;
-                               }
+                       }
                                        
                                /*if(wasEmpty && itemAdded)
                                        closeQueue.notify();*/
-                               if (! skippedQueue.isEmpty())
-                                       preCloseQueue=skippedQueue;
-                       }
+                               
+                       
                        
                }       
        }

_______________________________________________
cvs mailing list
[EMAIL PROTECTED]
http://dodo.freenetproject.org/cgi-bin/mailman/listinfo/cvs

Reply via email to