Mercurial Hosting > luan
annotate src/org/eclipse/jetty/server/bio/SocketConnector.java @ 803:166b16bda630
remove org.eclipse.jetty.util.preventers
| author | Franklin Schmidt <fschmidt@gmail.com> | 
|---|---|
| date | Wed, 07 Sep 2016 21:21:32 -0600 | 
| parents | 3428c60d7cfc | 
| children | 8e9db0bbf4f9 | 
| rev | line source | 
|---|---|
| 802 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 1 // | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 2 // ======================================================================== | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 3 // Copyright (c) 1995-2014 Mort Bay Consulting Pty. Ltd. | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 4 // ------------------------------------------------------------------------ | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 5 // All rights reserved. This program and the accompanying materials | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 6 // are made available under the terms of the Eclipse Public License v1.0 | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 7 // and Apache License v2.0 which accompanies this distribution. | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 8 // | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 9 // The Eclipse Public License is available at | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 10 // http://www.eclipse.org/legal/epl-v10.html | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 11 // | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 12 // The Apache License v2.0 is available at | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 13 // http://www.opensource.org/licenses/apache2.0.php | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 14 // | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 15 // You may elect to redistribute this code under either of these licenses. | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 16 // ======================================================================== | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 17 // | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 18 | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 19 package org.eclipse.jetty.server.bio; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 20 | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 21 import java.io.IOException; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 22 import java.net.InetAddress; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 23 import java.net.ServerSocket; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 24 import java.net.Socket; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 25 import java.net.SocketException; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 26 import java.util.HashSet; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 27 import java.util.Set; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 28 | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 29 import org.eclipse.jetty.http.HttpException; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 30 import org.eclipse.jetty.io.Buffer; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 31 import org.eclipse.jetty.io.ConnectedEndPoint; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 32 import org.eclipse.jetty.io.Connection; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 33 import org.eclipse.jetty.io.EndPoint; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 34 import org.eclipse.jetty.io.EofException; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 35 import org.eclipse.jetty.io.bio.SocketEndPoint; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 36 import org.eclipse.jetty.server.AbstractConnector; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 37 import org.eclipse.jetty.server.AbstractHttpConnection; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 38 import org.eclipse.jetty.server.BlockingHttpConnection; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 39 import org.eclipse.jetty.server.Request; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 40 import org.eclipse.jetty.util.component.AggregateLifeCycle; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 41 import org.eclipse.jetty.util.log.Log; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 42 import org.eclipse.jetty.util.log.Logger; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 43 | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 44 | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 45 /* ------------------------------------------------------------------------------- */ | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 46 /** Socket Connector. | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 47 * This connector implements a traditional blocking IO and threading model. | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 48 * Normal JRE sockets are used and a thread is allocated per connection. | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 49 * Buffers are managed so that large buffers are only allocated to active connections. | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 50 * | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 51 * This Connector should only be used if NIO is not available. | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 52 * | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 53 * @org.apache.xbean.XBean element="bioConnector" description="Creates a BIO based socket connector" | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 54 * | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 55 * | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 56 */ | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 57 public class SocketConnector extends AbstractConnector | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 58 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 59 private static final Logger LOG = Log.getLogger(SocketConnector.class); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 60 | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 61 protected ServerSocket _serverSocket; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 62 protected final Set<EndPoint> _connections; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 63 protected volatile int _localPort=-1; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 64 | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 65 /* ------------------------------------------------------------ */ | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 66 /** Constructor. | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 67 * | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 68 */ | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 69 public SocketConnector() | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 70 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 71 _connections=new HashSet<EndPoint>(); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 72 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 73 | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 74 /* ------------------------------------------------------------ */ | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 75 public Object getConnection() | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 76 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 77 return _serverSocket; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 78 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 79 | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 80 /* ------------------------------------------------------------ */ | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 81 public void open() throws IOException | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 82 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 83 // Create a new server socket and set to non blocking mode | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 84 if (_serverSocket==null || _serverSocket.isClosed()) | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 85 _serverSocket= newServerSocket(getHost(),getPort(),getAcceptQueueSize()); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 86 _serverSocket.setReuseAddress(getReuseAddress()); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 87 _localPort=_serverSocket.getLocalPort(); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 88 if (_localPort<=0) | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 89 throw new IllegalStateException("port not allocated for "+this); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 90 | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 91 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 92 | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 93 /* ------------------------------------------------------------ */ | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 94 protected ServerSocket newServerSocket(String host, int port,int backlog) throws IOException | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 95 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 96 ServerSocket ss= host==null? | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 97 new ServerSocket(port,backlog): | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 98 new ServerSocket(port,backlog,InetAddress.getByName(host)); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 99 | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 100 return ss; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 101 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 102 | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 103 /* ------------------------------------------------------------ */ | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 104 public void close() throws IOException | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 105 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 106 if (_serverSocket!=null) | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 107 _serverSocket.close(); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 108 _serverSocket=null; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 109 _localPort=-2; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 110 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 111 | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 112 /* ------------------------------------------------------------ */ | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 113 @Override | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 114 public void accept(int acceptorID) | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 115 throws IOException, InterruptedException | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 116 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 117 Socket socket = _serverSocket.accept(); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 118 configure(socket); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 119 | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 120 ConnectorEndPoint connection=new ConnectorEndPoint(socket); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 121 connection.dispatch(); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 122 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 123 | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 124 /* ------------------------------------------------------------------------------- */ | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 125 /** | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 126 * Allows subclass to override Conection if required. | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 127 */ | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 128 protected Connection newConnection(EndPoint endpoint) | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 129 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 130 return new BlockingHttpConnection(this, endpoint, getServer()); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 131 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 132 | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 133 /* ------------------------------------------------------------------------------- */ | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 134 @Override | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 135 public void customize(EndPoint endpoint, Request request) | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 136 throws IOException | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 137 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 138 ConnectorEndPoint connection = (ConnectorEndPoint)endpoint; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 139 int lrmit = isLowResources()?_lowResourceMaxIdleTime:_maxIdleTime; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 140 connection.setMaxIdleTime(lrmit); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 141 | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 142 super.customize(endpoint, request); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 143 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 144 | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 145 /* ------------------------------------------------------------------------------- */ | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 146 public int getLocalPort() | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 147 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 148 return _localPort; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 149 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 150 | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 151 /* ------------------------------------------------------------------------------- */ | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 152 @Override | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 153 protected void doStart() throws Exception | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 154 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 155 _connections.clear(); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 156 super.doStart(); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 157 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 158 | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 159 /* ------------------------------------------------------------------------------- */ | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 160 @Override | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 161 protected void doStop() throws Exception | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 162 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 163 super.doStop(); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 164 Set<EndPoint> set = new HashSet<EndPoint>(); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 165 synchronized(_connections) | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 166 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 167 set.addAll(_connections); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 168 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 169 for (EndPoint endPoint : set) | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 170 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 171 ConnectorEndPoint connection = (ConnectorEndPoint)endPoint; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 172 connection.close(); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 173 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 174 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 175 | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 176 @Override | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 177 public void dump(Appendable out, String indent) throws IOException | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 178 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 179 super.dump(out, indent); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 180 Set<EndPoint> connections = new HashSet<EndPoint>(); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 181 synchronized (_connections) | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 182 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 183 connections.addAll(_connections); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 184 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 185 AggregateLifeCycle.dump(out, indent, connections); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 186 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 187 | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 188 /* ------------------------------------------------------------------------------- */ | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 189 /* ------------------------------------------------------------------------------- */ | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 190 /* ------------------------------------------------------------------------------- */ | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 191 protected class ConnectorEndPoint extends SocketEndPoint implements Runnable, ConnectedEndPoint | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 192 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 193 volatile Connection _connection; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 194 protected final Socket _socket; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 195 | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 196 public ConnectorEndPoint(Socket socket) throws IOException | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 197 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 198 super(socket,_maxIdleTime); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 199 _connection = newConnection(this); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 200 _socket=socket; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 201 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 202 | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 203 public Connection getConnection() | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 204 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 205 return _connection; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 206 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 207 | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 208 public void setConnection(Connection connection) | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 209 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 210 if (_connection!=connection && _connection!=null) | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 211 connectionUpgraded(_connection,connection); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 212 _connection=connection; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 213 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 214 | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 215 public void dispatch() throws IOException | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 216 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 217 if (getThreadPool()==null || !getThreadPool().dispatch(this)) | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 218 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 219 LOG.warn("dispatch failed for {}",_connection); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 220 close(); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 221 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 222 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 223 | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 224 @Override | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 225 public int fill(Buffer buffer) throws IOException | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 226 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 227 int l = super.fill(buffer); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 228 if (l<0) | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 229 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 230 if (!isInputShutdown()) | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 231 shutdownInput(); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 232 if (isOutputShutdown()) | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 233 close(); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 234 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 235 return l; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 236 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 237 | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 238 @Override | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 239 public void close() throws IOException | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 240 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 241 if (_connection instanceof AbstractHttpConnection) | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 242 ((AbstractHttpConnection)_connection).getRequest().getAsyncContinuation().cancel(); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 243 super.close(); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 244 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 245 | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 246 public void run() | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 247 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 248 try | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 249 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 250 connectionOpened(_connection); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 251 synchronized(_connections) | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 252 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 253 _connections.add(this); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 254 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 255 | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 256 while (isStarted() && !isClosed()) | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 257 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 258 if (_connection.isIdle()) | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 259 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 260 if (isLowResources()) | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 261 setMaxIdleTime(getLowResourcesMaxIdleTime()); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 262 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 263 | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 264 _connection=_connection.handle(); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 265 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 266 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 267 catch (EofException e) | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 268 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 269 LOG.debug("EOF", e); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 270 try{close();} | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 271 catch(IOException e2){LOG.ignore(e2);} | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 272 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 273 catch (SocketException e) | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 274 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 275 LOG.debug("EOF", e); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 276 try{close();} | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 277 catch(IOException e2){LOG.ignore(e2);} | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 278 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 279 catch (HttpException e) | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 280 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 281 LOG.debug("BAD", e); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 282 try{close();} | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 283 catch(IOException e2){LOG.ignore(e2);} | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 284 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 285 catch(Exception e) | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 286 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 287 LOG.warn("handle failed?",e); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 288 try{close();} | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 289 catch(IOException e2){LOG.ignore(e2);} | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 290 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 291 finally | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 292 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 293 connectionClosed(_connection); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 294 synchronized(_connections) | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 295 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 296 _connections.remove(this); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 297 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 298 | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 299 // wait for client to close, but if not, close ourselves. | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 300 try | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 301 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 302 if (!_socket.isClosed()) | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 303 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 304 long timestamp=System.currentTimeMillis(); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 305 int max_idle=getMaxIdleTime(); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 306 | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 307 _socket.setSoTimeout(getMaxIdleTime()); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 308 int c=0; | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 309 do | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 310 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 311 c = _socket.getInputStream().read(); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 312 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 313 while (c>=0 && (System.currentTimeMillis()-timestamp)<max_idle); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 314 if (!_socket.isClosed()) | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 315 _socket.close(); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 316 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 317 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 318 catch(IOException e) | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 319 { | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 320 LOG.ignore(e); | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 321 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 322 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 323 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 324 } | 
| 
3428c60d7cfc
replace jetty jars with source
 Franklin Schmidt <fschmidt@gmail.com> parents: diff
changeset | 325 } | 
