diff --git a/Foundation Web Core/src/com/foundation/web/server/WebServer.java b/Foundation Web Core/src/com/foundation/web/server/WebServer.java index 88831d8..cc6d839 100644 --- a/Foundation Web Core/src/com/foundation/web/server/WebServer.java +++ b/Foundation Web Core/src/com/foundation/web/server/WebServer.java @@ -326,19 +326,21 @@ public class WebServer { */ protected void flagWrite(boolean requiresWrite) { synchronized(key) { - int ops = key.interestOps(); - boolean hasWrite = (ops & SelectionKey.OP_WRITE) != 0; - - if(requiresWrite) { - if(!hasWrite) { - if(key.isValid()) key.interestOps(ops | SelectionKey.OP_WRITE); + if(key.isValid()) { + int ops = key.interestOps(); + boolean hasWrite = (ops & SelectionKey.OP_WRITE) != 0; + + if(requiresWrite) { + if(!hasWrite) { + key.interestOps(ops | SelectionKey.OP_WRITE); + }//if// }//if// + else { + if(hasWrite) { + key.interestOps(ops ^ SelectionKey.OP_WRITE); + }//if// + }//else// }//if// - else { - if(hasWrite) { - if(key.isValid()) key.interestOps(ops ^ SelectionKey.OP_WRITE); - }//if// - }//else// }//synchronized// }//flagWrite()// /** @@ -347,50 +349,54 @@ public class WebServer { */ protected void flagRead(boolean requiresRead) { synchronized(key) { - int ops = key.interestOps(); - boolean hasRead = (ops & SelectionKey.OP_READ) != 0; - - if(requiresRead) { - if(!hasRead) { - if(key.isValid()) key.interestOps(ops | SelectionKey.OP_READ); + if(key.isValid()) { + int ops = key.interestOps(); + boolean hasRead = (ops & SelectionKey.OP_READ) != 0; + + if(requiresRead) { + if(!hasRead) { + key.interestOps(ops | SelectionKey.OP_READ); + }//if// }//if// + else { + if(hasRead) { + key.interestOps(ops ^ SelectionKey.OP_READ); + }//if// + }//else// }//if// - else { - if(hasRead) { - if(key.isValid()) key.interestOps(ops ^ SelectionKey.OP_READ); - }//if// - }//else// }//synchronized// }//flagWrite()// protected void flagReadWrite(boolean requiresRead, boolean requiresWrite) { synchronized(key) { - int ops = key.interestOps(); - boolean hasRead = (ops & SelectionKey.OP_READ) != 0; - boolean hasWrite = (ops & SelectionKey.OP_WRITE) != 0; - - if(requiresRead) { - if(!hasRead) { - ops |= SelectionKey.OP_READ; + if(key.isValid()) { + int ops = key.interestOps(); + boolean hasRead = (ops & SelectionKey.OP_READ) != 0; + boolean hasWrite = (ops & SelectionKey.OP_WRITE) != 0; + + if(requiresRead) { + if(!hasRead) { + ops |= SelectionKey.OP_READ; + }//if// }//if// + else { + if(hasRead) { + ops ^= SelectionKey.OP_READ; + }//if// + }//else// + + if(requiresWrite) { + if(!hasWrite) { + ops |= SelectionKey.OP_WRITE; + }//if// + }//if// + else { + if(hasWrite) { + ops ^= SelectionKey.OP_WRITE; + }//if// + }//else// + + key.interestOps(ops); }//if// - else { - if(hasRead) { - ops ^= SelectionKey.OP_READ; - }//if// - }//else// - - if(requiresWrite) { - if(!hasWrite) { - ops |= SelectionKey.OP_WRITE; - }//if// - }//if// - else { - if(hasWrite) { - ops ^= SelectionKey.OP_WRITE; - }//if// - }//else// - - if(key.isValid()) key.interestOps(ops); }//synchronized// }//flagReadWrite()// protected void flagReadWrite() { @@ -2282,7 +2288,18 @@ public synchronized boolean start() throws IOException { }//else// if(success) { - networkListener = new NetworkListener(selector, 10); + String threadCount = System.getProperty("webserver.listener.threads"); + int count = 10; + + if(threadCount != null) { + try {count = Integer.parseInt(threadCount);} catch(Throwable e) {Debug.log(e);} + + if(count < 1) { + count = 10; + }//if// + }//if// + + networkListener = new NetworkListener(selector, count); networkListener.start(); }//if// else {