JETTY-1015 work in progress
git-svn-id: svn+ssh://dev.eclipse.org/svnroot/rt/org.eclipse.jetty/jetty/trunk@207 7e9141cc-0065-0410-87d8-b60c137991c4
This commit is contained in:
parent
3ee44fd757
commit
ab24a94666
|
@ -85,7 +85,7 @@ public class HttpClient extends AbstractBuffers implements Attributes
|
|||
|
||||
private int _connectorType = CONNECTOR_SELECT_CHANNEL;
|
||||
private boolean _useDirectBuffers = true;
|
||||
private int _maxConnectionsPerAddress = 32;
|
||||
private int _maxConnectionsPerAddress = Integer.MAX_VALUE;
|
||||
private Map<Address, HttpDestination> _destinations = new HashMap<Address, HttpDestination>();
|
||||
ThreadPool _threadPool;
|
||||
Connector _connector;
|
||||
|
@ -121,14 +121,21 @@ public class HttpClient extends AbstractBuffers implements Attributes
|
|||
private AttributesMap _attributes=new AttributesMap();
|
||||
|
||||
/* ------------------------------------------------------------------------------- */
|
||||
public void dump() throws IOException
|
||||
public void dump()
|
||||
{
|
||||
try
|
||||
{
|
||||
for (Map.Entry<Address, HttpDestination> entry : _destinations.entrySet())
|
||||
{
|
||||
System.err.println("\n" + entry.getKey() + ":");
|
||||
Log.info("\n" + entry.getKey() + ":");
|
||||
entry.getValue().dump();
|
||||
}
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
Log.warn(e);
|
||||
}
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------------------- */
|
||||
public void send(HttpExchange exchange) throws IOException
|
||||
|
|
|
@ -61,10 +61,10 @@ public class HttpConnection implements Connection
|
|||
|
||||
public void dump() throws IOException
|
||||
{
|
||||
System.err.println("endp=" + _endp + " " + _endp.isBufferingInput() + " " + _endp.isBufferingOutput());
|
||||
System.err.println("generator=" + _generator);
|
||||
System.err.println("parser=" + _parser.getState() + " " + _parser.isMoreInBuffer());
|
||||
System.err.println("exchange=" + _exchange);
|
||||
Log.info("endp=" + _endp + " " + _endp.isBufferingInput() + " " + _endp.isBufferingOutput());
|
||||
Log.info("generator=" + _generator);
|
||||
Log.info("parser=" + _parser.getState() + " " + _parser.isMoreInBuffer());
|
||||
Log.info("exchange=" + _exchange);
|
||||
if (_endp instanceof SslSelectChannelEndPoint)
|
||||
((SslSelectChannelEndPoint)_endp).dump();
|
||||
}
|
||||
|
@ -296,6 +296,7 @@ public class HttpConnection implements Connection
|
|||
}
|
||||
}
|
||||
failed = true;
|
||||
Log.warn("IOE on "+_exchange);
|
||||
throw e;
|
||||
}
|
||||
finally
|
||||
|
|
|
@ -35,13 +35,13 @@ import org.eclipse.jetty.util.log.Log;
|
|||
*/
|
||||
public class HttpDestination
|
||||
{
|
||||
private ByteArrayBuffer _hostHeader;
|
||||
private final ByteArrayBuffer _hostHeader;
|
||||
private final Address _address;
|
||||
private final LinkedList<HttpConnection> _connections = new LinkedList<HttpConnection>();
|
||||
private final ArrayList<HttpConnection> _idle = new ArrayList<HttpConnection>();
|
||||
private final HttpClient _client;
|
||||
private final boolean _ssl;
|
||||
private int _maxConnections;
|
||||
private final int _maxConnections;
|
||||
private int _pendingConnections = 0;
|
||||
private ArrayBlockingQueue<Object> _newQueue = new ArrayBlockingQueue<Object>(10, true);
|
||||
private int _newConnection = 0;
|
||||
|
@ -50,14 +50,15 @@ public class HttpDestination
|
|||
private PathMap _authorizations;
|
||||
private List<HttpCookie> _cookies;
|
||||
|
||||
/* ------------------------------------------------------------ */
|
||||
public void dump() throws IOException
|
||||
{
|
||||
synchronized (this)
|
||||
{
|
||||
System.err.println(this);
|
||||
System.err.println("connections=" + _connections.size());
|
||||
System.err.println("idle=" + _idle.size());
|
||||
System.err.println("pending=" + _pendingConnections);
|
||||
Log.info(this.toString());
|
||||
Log.info("connections=" + _connections.size());
|
||||
Log.info("idle=" + _idle.size());
|
||||
Log.info("pending=" + _pendingConnections);
|
||||
for (HttpConnection c : _connections)
|
||||
{
|
||||
if (!c.isIdle())
|
||||
|
@ -70,9 +71,9 @@ public class HttpDestination
|
|||
private LinkedList<HttpExchange> _queue = new LinkedList<HttpExchange>();
|
||||
|
||||
/* ------------------------------------------------------------ */
|
||||
HttpDestination(HttpClient pool, Address address, boolean ssl, int maxConnections)
|
||||
HttpDestination(HttpClient client, Address address, boolean ssl, int maxConnections)
|
||||
{
|
||||
_client = pool;
|
||||
_client = client;
|
||||
_address = address;
|
||||
_ssl = ssl;
|
||||
_maxConnections = maxConnections;
|
||||
|
@ -211,6 +212,12 @@ public class HttpDestination
|
|||
{
|
||||
synchronized (this)
|
||||
{
|
||||
if (connection!=null)
|
||||
{
|
||||
_connections.remove(connection);
|
||||
connection.getEndPoint().close();
|
||||
connection=null;
|
||||
}
|
||||
if (_idle.size() > 0)
|
||||
connection = _idle.remove(_idle.size()-1);
|
||||
}
|
||||
|
@ -222,9 +229,6 @@ public class HttpDestination
|
|||
if (connection.getEndPoint().isOpen() && (last==0 || ((now-last)<idleTimeout)) )
|
||||
return connection;
|
||||
|
||||
_connections.remove(connection);
|
||||
connection.getEndPoint().close();
|
||||
connection=null;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -455,12 +459,16 @@ public class HttpDestination
|
|||
((Authorization)auth).setCredentials(ex);
|
||||
}
|
||||
|
||||
synchronized (this)
|
||||
HttpConnection connection = getIdleConnection();
|
||||
if (connection != null)
|
||||
{
|
||||
//System.out.println( "Sending: " + ex.toString() );
|
||||
boolean sent = connection.send(ex);
|
||||
if (!sent) connection = null;
|
||||
}
|
||||
|
||||
HttpConnection connection = null;
|
||||
if (_queue.size() > 0 || (connection = getIdleConnection()) == null || !connection.send(ex))
|
||||
if (connection == null)
|
||||
{
|
||||
synchronized (this)
|
||||
{
|
||||
_queue.add(ex);
|
||||
if (_connections.size() + _pendingConnections < _maxConnections)
|
||||
|
|
|
@ -97,7 +97,7 @@ public class SslSelectChannelEndPoint extends SelectChannelEndPoint
|
|||
// TODO get rid of these dumps
|
||||
public void dump()
|
||||
{
|
||||
System.err.println(_result);
|
||||
Log.info(""+_result);
|
||||
// System.err.println(h.toString());
|
||||
// System.err.println("--");
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue