Update of /cvsroot/freenet/freenet/src/freenet/transport
In directory sc8-pr-cvs1:/tmp/cvs-serv15768/src/freenet/transport
Modified Files:
Tag: ngrouting
AbstractSelectorLoop.java
Log Message:
reworked closing
Index: AbstractSelectorLoop.java
===================================================================
RCS file: /cvsroot/freenet/freenet/src/freenet/transport/AbstractSelectorLoop.java,v
retrieving revision 1.57.2.8
retrieving revision 1.57.2.9
diff -u -r1.57.2.8 -r1.57.2.9
--- AbstractSelectorLoop.java 26 Aug 2003 21:31:49 -0000 1.57.2.8
+++ AbstractSelectorLoop.java 29 Aug 2003 16:42:30 -0000 1.57.2.9
@@ -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;
- }
+
+
}
}
@@ -507,8 +515,7 @@
// we should die a horrible death and at least
log something, damn it! --zab
} catch (Error e) {
- if(e.getMessage() != null &&
- e.getMessage().indexOf("POLLNVAL") >= 0) {
+ if(e.getMessage().indexOf("POLLNVAL") >= 0) {
// GRRRRR!
Core.logger.log(this, "POLLNVAL detected in "+this+"
("+e+
"), trying to
workaround - I hate JVMs!",
_______________________________________________
cvs mailing list
[EMAIL PROTECTED]
http://dodo.freenetproject.org/cgi-bin/mailman/listinfo/cvs