From bb3b11055dc4c4dd9082785dd356862298e3c881 Mon Sep 17 00:00:00 2001 From: Aravind Sontireddy Date: Sun, 3 Sep 2023 15:45:19 -0500 Subject: [PATCH] Implemented doThen to accept multiple ConnectionPoolListener --- .../armeria/client/ConnectionPoolListener.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/core/src/main/java/com/linecorp/armeria/client/ConnectionPoolListener.java b/core/src/main/java/com/linecorp/armeria/client/ConnectionPoolListener.java index 815c59bca23..5f30ae84195 100644 --- a/core/src/main/java/com/linecorp/armeria/client/ConnectionPoolListener.java +++ b/core/src/main/java/com/linecorp/armeria/client/ConnectionPoolListener.java @@ -26,6 +26,8 @@ import io.micrometer.core.instrument.MeterRegistry; import io.netty.util.AttributeMap; +import static java.util.Objects.requireNonNull; + /** * Listens to the client connection pool events. */ @@ -122,4 +124,19 @@ void connectionClosed(SessionProtocol protocol, default ConnectionPoolListener unwrap() { return this; } + + default ConnectionPoolListener doThen(ConnectionPoolListener anotherConnectionPoolListener) { + requireNonNull(anotherConnectionPoolListener, "anotherConnectionPoolListener"); + return new ConnectionPoolListener() { + @Override + public void connectionOpen(SessionProtocol protocol, InetSocketAddress remoteAddr, InetSocketAddress localAddr, AttributeMap attrs) throws Exception { + anotherConnectionPoolListener.connectionOpen(protocol, remoteAddr, localAddr, attrs); + } + + @Override + public void connectionClosed(SessionProtocol protocol, InetSocketAddress remoteAddr, InetSocketAddress localAddr, AttributeMap attrs) throws Exception { + anotherConnectionPoolListener.connectionClosed(protocol, remoteAddr, localAddr, attrs); + } + }; + } }