You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2007/06/17 13:28:39 UTC
svn commit: r548031 - in /jakarta/httpcomponents/httpcore/trunk:
module-main/src/main/java/org/apache/http/
module-main/src/main/java/org/apache/http/impl/
module-main/src/test/java/org/apache/http/impl/
module-main/src/test/java/org/apache/http/mockup...
Author: olegk
Date: Sun Jun 17 04:28:38 2007
New Revision: 548031
URL: http://svn.apache.org/viewvc?view=rev&rev=548031
Log:
HTTPCORE-21: Implemented HttpConnectionMetrics for blocking HTTP connections
Modified:
jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/HttpConnection.java
jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/AbstractHttpClientConnection.java
jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/AbstractHttpServerConnection.java
jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/HttpConnectionMetricsImpl.java
jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/impl/TestDefaultConnectionReuseStrategy.java
jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/mockup/HttpConnectionMockup.java
jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/NHttpConnectionBase.java
Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/HttpConnection.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/HttpConnection.java?view=diff&rev=548031&r1=548030&r2=548031
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/HttpConnection.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/HttpConnection.java Sun Jun 17 04:28:38 2007
@@ -100,4 +100,11 @@
* internal buffer prior to closing the underlying socket.
*/
public void shutdown() throws IOException;
+
+ /**
+ * Returns a collection of connection metrcis
+ * @return HttpConnectionMetrics
+ */
+ HttpConnectionMetrics getMetrics();
+
}
Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/AbstractHttpClientConnection.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/AbstractHttpClientConnection.java?view=diff&rev=548031&r1=548030&r2=548031
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/AbstractHttpClientConnection.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/AbstractHttpClientConnection.java Sun Jun 17 04:28:38 2007
@@ -36,6 +36,7 @@
import org.apache.http.Header;
import org.apache.http.HttpClientConnection;
+import org.apache.http.HttpConnectionMetrics;
import org.apache.http.HttpEntity;
import org.apache.http.HttpEntityEnclosingRequest;
import org.apache.http.HttpException;
@@ -85,6 +86,8 @@
private int maxLineLen = -1;
private int maxGarbageLines = -1;
+ private HttpConnectionMetricsImpl metrics;
+
public AbstractHttpClientConnection() {
super();
this.buffer = new CharArrayBuffer(128);
@@ -111,6 +114,12 @@
final HttpDataReceiver datareceiver,
final HttpDataTransmitter datatransmitter,
final HttpParams params) {
+ if (datareceiver == null) {
+ throw new IllegalArgumentException("HTTP data receiver may not be null");
+ }
+ if (datatransmitter == null) {
+ throw new IllegalArgumentException("HTTP data transmitter may not be null");
+ }
this.datareceiver = datareceiver;
this.datatransmitter = datatransmitter;
this.maxHeaderCount = params.getIntParameter(
@@ -119,6 +128,9 @@
HttpConnectionParams.MAX_LINE_LENGTH, -1);
this.maxGarbageLines = params.getIntParameter(
HttpConnectionParams.MAX_STATUS_LINE_GARBAGE, Integer.MAX_VALUE);
+ this.metrics = new HttpConnectionMetricsImpl(
+ datareceiver.getMetrics(),
+ datatransmitter.getMetrics());
}
public boolean isResponseAvailable(int timeout) throws IOException {
@@ -134,6 +146,7 @@
assertOpen();
sendRequestLine(request);
sendRequestHeaders(request);
+ this.metrics.incrementRequestCount();
}
public void sendRequestEntity(final HttpEntityEnclosingRequest request)
@@ -189,6 +202,7 @@
assertOpen();
HttpResponse response = readResponseStatusLine();
readResponseHeaders(response);
+ this.metrics.incrementResponseCount();
return response;
}
@@ -267,6 +281,10 @@
} catch (IOException ex) {
return true;
}
+ }
+
+ public HttpConnectionMetrics getMetrics() {
+ return this.metrics;
}
}
Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/AbstractHttpServerConnection.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/AbstractHttpServerConnection.java?view=diff&rev=548031&r1=548030&r2=548031
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/AbstractHttpServerConnection.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/AbstractHttpServerConnection.java Sun Jun 17 04:28:38 2007
@@ -36,6 +36,7 @@
import org.apache.http.ConnectionClosedException;
import org.apache.http.Header;
+import org.apache.http.HttpConnectionMetrics;
import org.apache.http.HttpEntity;
import org.apache.http.HttpEntityEnclosingRequest;
import org.apache.http.HttpException;
@@ -82,6 +83,8 @@
private int maxHeaderCount = -1;
private int maxLineLen = -1;
+ private HttpConnectionMetricsImpl metrics;
+
public AbstractHttpServerConnection() {
super();
this.buffer = new CharArrayBuffer(128);
@@ -108,12 +111,21 @@
final HttpDataReceiver datareceiver,
final HttpDataTransmitter datatransmitter,
final HttpParams params) {
+ if (datareceiver == null) {
+ throw new IllegalArgumentException("HTTP data receiver may not be null");
+ }
+ if (datatransmitter == null) {
+ throw new IllegalArgumentException("HTTP data transmitter may not be null");
+ }
this.datareceiver = datareceiver;
this.datatransmitter = datatransmitter;
this.maxHeaderCount = params.getIntParameter(
HttpConnectionParams.MAX_HEADER_COUNT, -1);
this.maxLineLen = params.getIntParameter(
HttpConnectionParams.MAX_LINE_LENGTH, -1);
+ this.metrics = new HttpConnectionMetricsImpl(
+ datareceiver.getMetrics(),
+ datatransmitter.getMetrics());
}
public HttpRequest receiveRequestHeader()
@@ -218,4 +230,8 @@
}
}
+ public HttpConnectionMetrics getMetrics() {
+ return this.metrics;
+ }
+
}
Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/HttpConnectionMetricsImpl.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/HttpConnectionMetricsImpl.java?view=diff&rev=548031&r1=548030&r2=548031
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/HttpConnectionMetricsImpl.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/HttpConnectionMetricsImpl.java Sun Jun 17 04:28:38 2007
@@ -33,6 +33,7 @@
import java.util.HashMap;
import org.apache.http.HttpConnectionMetrics;
+import org.apache.http.io.HttpTransportMetrics;
/**
* Implementation of the metrics interface.
@@ -44,68 +45,56 @@
public static final String SENT_BYTES_COUNT = "http.sent-bytes-count";
public static final String RECEIVED_BYTES_COUNT = "http.received-bytes-count";
+ private final HttpTransportMetrics inTransportMetric;
+ private final HttpTransportMetrics outTransportMetric;
private long requestCount = 0;
private long responseCount = 0;
- private long sentBytesCount = 0;
- private long receivedBytesCount = 0;
/**
* The cache map for all metrics values.
*/
private HashMap metricsCache;
- public HttpConnectionMetricsImpl() {
+ public HttpConnectionMetricsImpl(
+ final HttpTransportMetrics inTransportMetric,
+ final HttpTransportMetrics outTransportMetric) {
super();
+ this.inTransportMetric = inTransportMetric;
+ this.outTransportMetric = outTransportMetric;
}
/* ------------------ Public interface method -------------------------- */
- public long getRequestCount() {
- return requestCount;
- }
-
- public void setRequestCount(long count) {
- requestCount = count;
- }
-
- public void incrementRequestCount(long count) {
- requestCount += count;
- }
-
- public long getResponseCount() {
- return responseCount;
- }
-
- public void setResponseCount(long count) {
- responseCount = count;
- }
-
- public void incrementResponseCount(long count) {
- responseCount += count;
+ public long getReceivedBytesCount() {
+ if (this.inTransportMetric != null) {
+ return this.inTransportMetric.getBytesTransferred();
+ } else {
+ return -1;
+ }
}
-
+
public long getSentBytesCount() {
- return sentBytesCount;
+ if (this.outTransportMetric != null) {
+ return this.outTransportMetric.getBytesTransferred();
+ } else {
+ return -1;
+ }
}
- public void setSentBytesCount(long count) {
- sentBytesCount = count;
+ public long getRequestCount() {
+ return this.requestCount;
}
- public void incrementSentBytesCount(long count) {
- sentBytesCount += count;
+ public void incrementRequestCount() {
+ this.requestCount++;
}
- public long getReceivedBytesCount() {
- return receivedBytesCount;
- }
-
- public void setReceivedBytesCount(long count) {
- receivedBytesCount = count;
+ public long getResponseCount() {
+ return this.responseCount;
}
- public void incrementReceivedBytesCount(long count) {
- receivedBytesCount += count;
+ public void incrementResponseCount() {
+ this.responseCount++;
}
public Object getMetric(final String metricName) {
@@ -119,9 +108,17 @@
} else if (RESPONSE_COUNT.equals(metricName)) {
value = new Long(responseCount);
} else if (RECEIVED_BYTES_COUNT.equals(metricName)) {
- value = new Long(receivedBytesCount);
+ if (this.inTransportMetric != null) {
+ return new Long(this.inTransportMetric.getBytesTransferred());
+ } else {
+ return null;
+ }
} else if (SENT_BYTES_COUNT.equals(metricName)) {
- value = new Long(sentBytesCount);
+ if (this.outTransportMetric != null) {
+ return new Long(this.outTransportMetric.getBytesTransferred());
+ } else {
+ return null;
+ }
}
}
return value;
@@ -135,11 +132,15 @@
}
public void reset() {
- requestCount = 0;
- responseCount = 0;
- sentBytesCount = 0;
- receivedBytesCount = 0;
+ if (this.outTransportMetric != null) {
+ this.outTransportMetric.reset();
+ }
+ if (this.inTransportMetric != null) {
+ this.inTransportMetric.reset();
+ }
+ this.requestCount = 0;
+ this.responseCount = 0;
this.metricsCache = null;
}
-
+
}
Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/impl/TestDefaultConnectionReuseStrategy.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/impl/TestDefaultConnectionReuseStrategy.java?view=diff&rev=548031&r1=548030&r2=548031
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/impl/TestDefaultConnectionReuseStrategy.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/impl/TestDefaultConnectionReuseStrategy.java Sun Jun 17 04:28:38 2007
@@ -32,6 +32,7 @@
import org.apache.http.ConnectionReuseStrategy;
import org.apache.http.HttpConnection;
+import org.apache.http.HttpConnectionMetrics;
import org.apache.http.HttpResponse;
import org.apache.http.HttpVersion;
import org.apache.http.StatusLine;
@@ -311,6 +312,10 @@
public final void shutdown() {
throw new UnsupportedOperationException
("connection state must not be modified");
+ }
+
+ public HttpConnectionMetrics getMetrics() {
+ return null;
}
} // class MockConnection
Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/mockup/HttpConnectionMockup.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/mockup/HttpConnectionMockup.java?view=diff&rev=548031&r1=548030&r2=548031
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/mockup/HttpConnectionMockup.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/mockup/HttpConnectionMockup.java Sun Jun 17 04:28:38 2007
@@ -34,6 +34,7 @@
import java.io.IOException;
import org.apache.http.HttpConnection;
+import org.apache.http.HttpConnectionMetrics;
/**
* {@link HttpConnection} mockup implementation.
@@ -69,6 +70,10 @@
public boolean isStale() {
return false;
+ }
+
+ public HttpConnectionMetrics getMetrics() {
+ return null;
}
}
Modified: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/NHttpConnectionBase.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/NHttpConnectionBase.java?view=diff&rev=548031&r1=548030&r2=548031
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/NHttpConnectionBase.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/NHttpConnectionBase.java Sun Jun 17 04:28:38 2007
@@ -38,6 +38,7 @@
import org.apache.http.ConnectionClosedException;
import org.apache.http.Header;
+import org.apache.http.HttpConnectionMetrics;
import org.apache.http.HttpEntity;
import org.apache.http.HttpException;
import org.apache.http.HttpInetConnection;
@@ -271,6 +272,10 @@
public void shutdown() throws IOException {
this.closed = true;
this.session.shutdown();
+ }
+
+ public HttpConnectionMetrics getMetrics() {
+ return null;
}
}