From da1806887d7f6223b991ee9585f895643c053113 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Tue, 9 Jun 2020 14:40:43 -0500 Subject: [PATCH] Issue #4954 - ByteCount API + More updates from quick review of concept with simone Signed-off-by: Joakim Erdfelt --- .../main/java/org/eclipse/jetty/server/ByteCountEvent.java | 3 ++- .../java/org/eclipse/jetty/server/ByteCountEventAdaptor.java | 5 +++++ .../org/eclipse/jetty/server/ByteCounterChannelListener.java | 3 +++ .../src/main/java/org/eclipse/jetty/server/HttpChannel.java | 2 ++ 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/ByteCountEvent.java b/jetty-server/src/main/java/org/eclipse/jetty/server/ByteCountEvent.java index faed435606e6..5070378c7333 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/ByteCountEvent.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/ByteCountEvent.java @@ -31,7 +31,8 @@ public interface ByteCountEvent Throwable getResponseFailure(); // TODO: do we care about upgraded connections? - // TODO: what about HTTP/2 ? + // TODO: what about the TLS bytes? (SSLConnection bytesIn / bytesOut?) + // TODO: what about HTTP/2 ? (what about non-stream frames? settings, window-updates, reset, etc) interface HttpByteCount { diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/ByteCountEventAdaptor.java b/jetty-server/src/main/java/org/eclipse/jetty/server/ByteCountEventAdaptor.java index 4ad594a6ef03..85cd9e9a0762 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/ByteCountEventAdaptor.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/ByteCountEventAdaptor.java @@ -117,6 +117,11 @@ void onBodyEnd(long connectionCount, long byteCountAPI) this.trailerStart = connectionCount; } + public void onTrailerStart(long connectionCount) + { + this.trailerStart = connectionCount; + } + void onTrailerEnd(long connectionCount) { this.trailerEnd = connectionCount; diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/ByteCounterChannelListener.java b/jetty-server/src/main/java/org/eclipse/jetty/server/ByteCounterChannelListener.java index 9a6591c39b84..7ac279cc5ec4 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/ByteCounterChannelListener.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/ByteCounterChannelListener.java @@ -60,6 +60,7 @@ public void onRequestEnd(Request request) HttpInput httpInput = request.getHttpInput(); long byteCountRequestAPI = httpInput.getContentConsumed(); byteCountEventAdaptor.getRequestCount().onBodyEnd(connection.getBytesIn(), byteCountRequestAPI); + byteCountEventAdaptor.getRequestCount().onTrailerStart(connection.getBytesIn()); } } @@ -85,6 +86,8 @@ public void onRequestFailure(Request request, Throwable failure) } } + // TODO: investigate Http Dispatch Failure too. + @Override public void onResponseBegin(Request request) { diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java index a1a14623f6e1..b197f6f6f1dc 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java @@ -1150,6 +1150,8 @@ default void onResponseContent(Request request, ByteBuffer content) { } + // TODO: need onResponseTrailers(Request request) - see https://github.com/eclipse/jetty.project/issues/4956 + /** * Invoked when the response has been fully written. *