blob: 0623e8d04f26d488b16a2d0f6bcac3aac31abc24 [file] [log] [blame]
/*
*/
package org.apache.tomcat.lite.service;
import java.io.IOException;
import java.util.List;
import org.apache.tomcat.lite.http.HttpConnectionPool;
import org.apache.tomcat.lite.http.HttpRequest;
import org.apache.tomcat.lite.http.HttpResponse;
import org.apache.tomcat.lite.http.HttpWriter;
import org.apache.tomcat.lite.http.HttpChannel.HttpService;
import org.apache.tomcat.lite.http.HttpConnectionPool.RemoteServer;
import org.apache.tomcat.lite.http.HttpConnector.HttpConnection;
import org.apache.tomcat.lite.io.IOChannel;
/**
* Dump status of a connection pool.
*/
public class IOStatus implements HttpService {
private HttpConnectionPool pool;
public IOStatus(HttpConnectionPool pool) {
this.pool = pool;
}
@Override
public void service(HttpRequest httpReq, HttpResponse httpRes)
throws IOException {
HttpConnectionPool sc = pool;
HttpWriter out = httpRes.getBodyWriter();
httpRes.setContentType("text/plain");
// TODO: use JMX/DynamicObject to get all public info
out.println("hosts=" + sc.getTargetCount());
out.println("waiting=" + sc.getSocketCount());
out.println("closed=" + sc.getClosedSockets());
out.println();
for (RemoteServer remote: sc.getServers()) {
out.append(remote.target);
out.append("=");
List<HttpConnection> connections = remote.getConnections();
out.println(Integer.toString(connections.size()));
for (IOChannel ch: connections) {
out.println(ch.getId() +
" " + ch.toString());
}
out.println();
}
}
}