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 2017/04/14 11:13:40 UTC
svn commit: r1791351 - in /httpcomponents/httpcore/trunk:
httpcore5-h2/src/main/java/org/apache/hc/core5/http2/impl/nio/
httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/
httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/
Author: olegk
Date: Fri Apr 14 11:13:40 2017
New Revision: 1791351
URL: http://svn.apache.org/viewvc?rev=1791351&view=rev
Log:
Made EndpointDetails attributes lazy initialized
Modified:
httpcomponents/httpcore/trunk/httpcore5-h2/src/main/java/org/apache/hc/core5/http2/impl/nio/AbstractHttp2StreamMultiplexer.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/BHttpConnectionBase.java
httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/AbstractHttp1StreamDuplexer.java
Modified: httpcomponents/httpcore/trunk/httpcore5-h2/src/main/java/org/apache/hc/core5/http2/impl/nio/AbstractHttp2StreamMultiplexer.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5-h2/src/main/java/org/apache/hc/core5/http2/impl/nio/AbstractHttp2StreamMultiplexer.java?rev=1791351&r1=1791350&r2=1791351&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5-h2/src/main/java/org/apache/hc/core5/http2/impl/nio/AbstractHttp2StreamMultiplexer.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5-h2/src/main/java/org/apache/hc/core5/http2/impl/nio/AbstractHttp2StreamMultiplexer.java Fri Apr 14 11:13:40 2017
@@ -126,6 +126,7 @@ abstract class AbstractHttp2StreamMultip
private Continuation continuation;
private int processedRemoteStreamId;
+ private EndpointDetails endpointDetails;
AbstractHttp2StreamMultiplexer(
final Mode mode,
@@ -1180,7 +1181,10 @@ abstract class AbstractHttp2StreamMultip
@Override
public EndpointDetails getEndpointDetails() {
- return new BasicEndpointDetails(ioSession.getRemoteAddress(), ioSession.getLocalAddress(), connMetrics);
+ if (endpointDetails == null) {
+ endpointDetails = new BasicEndpointDetails(ioSession.getRemoteAddress(), ioSession.getLocalAddress(), connMetrics);
+ }
+ return endpointDetails;
}
@Override
Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/BHttpConnectionBase.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/BHttpConnectionBase.java?rev=1791351&r1=1791350&r2=1791351&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/BHttpConnectionBase.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/BHttpConnectionBase.java Fri Apr 14 11:13:40 2017
@@ -68,6 +68,7 @@ class BHttpConnectionBase implements BHt
final AtomicReference<SocketHolder> socketHolderRef;
volatile ProtocolVersion version;
+ volatile EndpointDetails endpointDetails;
BHttpConnectionBase(
final H1Config h1Config,
@@ -112,6 +113,7 @@ class BHttpConnectionBase implements BHt
protected void bind(final SocketHolder socketHolder) throws IOException {
Args.notNull(socketHolder, "Socket holder");
this.socketHolderRef.set(socketHolder);
+ this.endpointDetails = null;
}
@Override
@@ -316,7 +318,14 @@ class BHttpConnectionBase implements BHt
@Override
public EndpointDetails getEndpointDetails() {
- return new BasicEndpointDetails(getRemoteAddress(), getLocalAddress(), this.connMetrics);
+ if (endpointDetails == null) {
+ final SocketHolder socketHolder = this.socketHolderRef.get();
+ if (socketHolder != null) {
+ final Socket socket = socketHolder.getSocket();
+ endpointDetails = new BasicEndpointDetails(socket.getRemoteSocketAddress(), socket.getLocalSocketAddress(), this.connMetrics);
+ }
+ }
+ return endpointDetails;
}
@Override
Modified: httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/AbstractHttp1StreamDuplexer.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/AbstractHttp1StreamDuplexer.java?rev=1791351&r1=1791350&r2=1791351&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/AbstractHttp1StreamDuplexer.java (original)
+++ httpcomponents/httpcore/trunk/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/AbstractHttp1StreamDuplexer.java Fri Apr 14 11:13:40 2017
@@ -103,6 +103,7 @@ abstract class AbstractHttp1StreamDuplex
private volatile ConnectionState connState = ConnectionState.READY;
private volatile ProtocolVersion version;
+ private volatile EndpointDetails endpointDetails;
AbstractHttp1StreamDuplexer(
final IOSession ioSession,
@@ -541,7 +542,10 @@ abstract class AbstractHttp1StreamDuplex
@Override
public EndpointDetails getEndpointDetails() {
- return new BasicEndpointDetails(ioSession.getRemoteAddress(), ioSession.getLocalAddress(), connMetrics);
+ if (endpointDetails == null) {
+ endpointDetails = new BasicEndpointDetails(ioSession.getRemoteAddress(), ioSession.getLocalAddress(), connMetrics);
+ }
+ return endpointDetails;
}
@Override