Mercurial Hosting > luan
changeset 975:53b3f7d9714c
simplify BlockingChannelConnector
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sun, 16 Oct 2016 01:10:02 -0600 |
parents | 7422ca1ae146 |
children | 0697c1219e70 |
files | src/org/eclipse/jetty/server/Server.java src/org/eclipse/jetty/server/nio/BlockingChannelConnector.java |
diffstat | 2 files changed, 31 insertions(+), 52 deletions(-) [+] |
line wrap: on
line diff
--- a/src/org/eclipse/jetty/server/Server.java Sat Oct 15 23:27:08 2016 -0600 +++ b/src/org/eclipse/jetty/server/Server.java Sun Oct 16 01:10:02 2016 -0600 @@ -34,6 +34,7 @@ import org.eclipse.jetty.http.HttpURI; import org.eclipse.jetty.server.handler.HandlerWrapper; +import org.eclipse.jetty.server.nio.BlockingChannelConnector; import org.eclipse.jetty.server.nio.SelectChannelConnector; import org.eclipse.jetty.util.Attributes; import org.eclipse.jetty.util.AttributesMap; @@ -73,7 +74,8 @@ public Server(int port) { setServer(this); - new SelectChannelConnector(this,port); +// new SelectChannelConnector(this,port); + new BlockingChannelConnector(this,port); } @Override
--- a/src/org/eclipse/jetty/server/nio/BlockingChannelConnector.java Sat Oct 15 23:27:08 2016 -0600 +++ b/src/org/eclipse/jetty/server/nio/BlockingChannelConnector.java Sun Oct 16 01:10:02 2016 -0600 @@ -75,7 +75,7 @@ protected void doStart() throws Exception { // Create a new server socket and set to non blocking mode - _acceptChannel= ServerSocketChannel.open(); + _acceptChannel = ServerSocketChannel.open(); _acceptChannel.configureBlocking(true); // Bind the server socket to the local host and port @@ -93,7 +93,7 @@ try { Thread.sleep(400); - long now=System.currentTimeMillis(); + long now = System.currentTimeMillis(); for (BlockingChannelEndPoint endp : _endpoints) { endp.checkIdleTimestamp(now); @@ -123,8 +123,13 @@ Socket socket = channel.socket(); configure(socket); - BlockingChannelEndPoint connection=new BlockingChannelEndPoint(channel); - connection.dispatch(); + BlockingChannelEndPoint connection = new BlockingChannelEndPoint(channel); + try { + server.threadPool.execute(connection); + } catch(RejectedExecutionException e) { + LOG.warn("dispatch failed for {}",connection._connection); + connection.close(); + } } @Override @@ -150,80 +155,53 @@ _connection = new BlockingHttpConnection(BlockingChannelConnector.this,this); } - public void checkIdleTimestamp(long now) + private void checkIdleTimestamp(long now) { if (_idleTimestamp!=0 && _timeout>0 && now>(_idleTimestamp+_timeout)) { - idleExpired(); - } - } - - protected void idleExpired() - { - try - { - super.close(); - } - catch (IOException e) - { - LOG.trace("",e); - } - } - - void dispatch() throws IOException - { - try { - server.threadPool.execute(this); - } catch(RejectedExecutionException e) { - LOG.warn("dispatch failed for {}",_connection); - super.close(); + try + { + close(); + } + catch (IOException e) + { + LOG.trace("",e); + } } } - /* ------------------------------------------------------------ */ - /** - * @see org.eclipse.jetty.io.nio.ChannelEndPoint#fill(org.eclipse.jetty.io.Buffer) - */ @Override public int fill(Buffer buffer) throws IOException { - _idleTimestamp=System.currentTimeMillis(); + _idleTimestamp = System.currentTimeMillis(); return super.fill(buffer); } - /* ------------------------------------------------------------ */ - /** - * @see org.eclipse.jetty.io.nio.ChannelEndPoint#flush(org.eclipse.jetty.io.Buffer) - */ @Override public int flush(Buffer buffer) throws IOException { - _idleTimestamp=System.currentTimeMillis(); + _idleTimestamp = System.currentTimeMillis(); return super.flush(buffer); } - /* ------------------------------------------------------------ */ - /** - * @see org.eclipse.jetty.io.nio.ChannelEndPoint#flush(org.eclipse.jetty.io.Buffer, org.eclipse.jetty.io.Buffer, org.eclipse.jetty.io.Buffer) - */ @Override public int flush(Buffer header, Buffer buffer, Buffer trailer) throws IOException { - _idleTimestamp=System.currentTimeMillis(); + _idleTimestamp = System.currentTimeMillis(); return super.flush(header,buffer,trailer); } - /* ------------------------------------------------------------ */ + @Override public void run() { try { - _timeout=getMaxIdleTime(); + _timeout = getMaxIdleTime(); _endpoints.add(this); while (isOpen()) { - _idleTimestamp=System.currentTimeMillis(); + _idleTimestamp = System.currentTimeMillis(); _connection.handle(); } @@ -237,13 +215,13 @@ catch (HttpException e) { LOG.debug("BAD", e); - try{super.close();} + try{close();} catch(IOException e2){LOG.trace("",e2);} } catch(Throwable e) { LOG.warn("handle failed",e); - try{super.close();} + try{close();} catch(IOException e2){LOG.trace("",e2);} } finally @@ -255,8 +233,8 @@ { if (!_socket.isClosed()) { - long timestamp=System.currentTimeMillis(); - int max_idle=getMaxIdleTime(); + long timestamp = System.currentTimeMillis(); + int max_idle = getMaxIdleTime(); _socket.setSoTimeout(getMaxIdleTime()); int c=0; @@ -276,7 +254,6 @@ } } - /* ------------------------------------------------------------ */ @Override public String toString() {