This commit is contained in:
wcrisman
2014-07-18 17:21:36 -07:00

View File

@@ -326,19 +326,21 @@ public class WebServer {
*/ */
protected void flagWrite(boolean requiresWrite) { protected void flagWrite(boolean requiresWrite) {
synchronized(key) { synchronized(key) {
if(key.isValid()) {
int ops = key.interestOps(); int ops = key.interestOps();
boolean hasWrite = (ops & SelectionKey.OP_WRITE) != 0; boolean hasWrite = (ops & SelectionKey.OP_WRITE) != 0;
if(requiresWrite) { if(requiresWrite) {
if(!hasWrite) { if(!hasWrite) {
if(key.isValid()) key.interestOps(ops | SelectionKey.OP_WRITE); key.interestOps(ops | SelectionKey.OP_WRITE);
}//if// }//if//
}//if// }//if//
else { else {
if(hasWrite) { if(hasWrite) {
if(key.isValid()) key.interestOps(ops ^ SelectionKey.OP_WRITE); key.interestOps(ops ^ SelectionKey.OP_WRITE);
}//if// }//if//
}//else// }//else//
}//if//
}//synchronized// }//synchronized//
}//flagWrite()// }//flagWrite()//
/** /**
@@ -347,23 +349,26 @@ public class WebServer {
*/ */
protected void flagRead(boolean requiresRead) { protected void flagRead(boolean requiresRead) {
synchronized(key) { synchronized(key) {
if(key.isValid()) {
int ops = key.interestOps(); int ops = key.interestOps();
boolean hasRead = (ops & SelectionKey.OP_READ) != 0; boolean hasRead = (ops & SelectionKey.OP_READ) != 0;
if(requiresRead) { if(requiresRead) {
if(!hasRead) { if(!hasRead) {
if(key.isValid()) key.interestOps(ops | SelectionKey.OP_READ); key.interestOps(ops | SelectionKey.OP_READ);
}//if// }//if//
}//if// }//if//
else { else {
if(hasRead) { if(hasRead) {
if(key.isValid()) key.interestOps(ops ^ SelectionKey.OP_READ); key.interestOps(ops ^ SelectionKey.OP_READ);
}//if// }//if//
}//else// }//else//
}//if//
}//synchronized// }//synchronized//
}//flagWrite()// }//flagWrite()//
protected void flagReadWrite(boolean requiresRead, boolean requiresWrite) { protected void flagReadWrite(boolean requiresRead, boolean requiresWrite) {
synchronized(key) { synchronized(key) {
if(key.isValid()) {
int ops = key.interestOps(); int ops = key.interestOps();
boolean hasRead = (ops & SelectionKey.OP_READ) != 0; boolean hasRead = (ops & SelectionKey.OP_READ) != 0;
boolean hasWrite = (ops & SelectionKey.OP_WRITE) != 0; boolean hasWrite = (ops & SelectionKey.OP_WRITE) != 0;
@@ -390,7 +395,8 @@ public class WebServer {
}//if// }//if//
}//else// }//else//
if(key.isValid()) key.interestOps(ops); key.interestOps(ops);
}//if//
}//synchronized// }//synchronized//
}//flagReadWrite()// }//flagReadWrite()//
protected void flagReadWrite() { protected void flagReadWrite() {
@@ -2283,7 +2289,18 @@ public synchronized boolean start() throws IOException {
}//else// }//else//
if(success) { 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(); networkListener.start();
}//if// }//if//
else { else {