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