From 6a8049f1265748de91d44a61dc200ca52143a842 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Mon, 25 Mar 2013 18:41:57 +0100 Subject: [PATCH] Simplified connect Promise implementation. --- .../org/eclipse/jetty/client/HttpClient.java | 26 +++++++++++++------ .../eclipse/jetty/client/api/Destination.java | 17 ++++++++++++ 2 files changed, 35 insertions(+), 8 deletions(-) diff --git a/jetty-client/src/main/java/org/eclipse/jetty/client/HttpClient.java b/jetty-client/src/main/java/org/eclipse/jetty/client/HttpClient.java index a1b542c753f0..b183d598a678 100644 --- a/jetty-client/src/main/java/org/eclipse/jetty/client/HttpClient.java +++ b/jetty-client/src/main/java/org/eclipse/jetty/client/HttpClient.java @@ -40,7 +40,6 @@ import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ExecutionException; import java.util.concurrent.Executor; -import java.util.concurrent.Future; import java.util.concurrent.TimeoutException; import javax.net.ssl.SSLEngine; @@ -61,7 +60,6 @@ import org.eclipse.jetty.io.SelectChannelEndPoint; import org.eclipse.jetty.io.SelectorManager; import org.eclipse.jetty.io.ssl.SslConnection; -import org.eclipse.jetty.util.FuturePromise; import org.eclipse.jetty.util.Jetty; import org.eclipse.jetty.util.Promise; import org.eclipse.jetty.util.SocketAddressResolver; @@ -502,8 +500,8 @@ public void succeeded(SocketAddress socketAddress) channel.configureBlocking(false); channel.connect(socketAddress); - Future futureConnection = new ConnectionCallback(destination, promise); - selectorManager.connect(channel, futureConnection); + ConnectionCallback callback = new ConnectionCallback(destination, promise); + selectorManager.connect(channel, callback); } // Must catch all exceptions, since some like // UnresolvedAddressException are not IOExceptions. @@ -971,7 +969,7 @@ public org.eclipse.jetty.io.Connection newConnection(SocketChannel channel, EndP HttpConnection connection = newHttpConnection(HttpClient.this, appEndPoint, destination); appEndPoint.setConnection(connection); - callback.promise.succeeded(connection); + callback.succeeded(connection); return sslConnection; } @@ -979,7 +977,7 @@ public org.eclipse.jetty.io.Connection newConnection(SocketChannel channel, EndP else { HttpConnection connection = newHttpConnection(HttpClient.this, endPoint, destination); - callback.promise.succeeded(connection); + callback.succeeded(connection); return connection; } } @@ -988,11 +986,11 @@ public org.eclipse.jetty.io.Connection newConnection(SocketChannel channel, EndP protected void connectionFailed(SocketChannel channel, Throwable ex, Object attachment) { ConnectionCallback callback = (ConnectionCallback)attachment; - callback.promise.failed(ex); + callback.failed(ex); } } - private class ConnectionCallback extends FuturePromise + private class ConnectionCallback implements Promise { private final HttpDestination destination; private final Promise promise; @@ -1002,6 +1000,18 @@ private ConnectionCallback(HttpDestination destination, Promise prom this.destination = destination; this.promise = promise; } + + @Override + public void succeeded(Connection result) + { + promise.succeeded(result); + } + + @Override + public void failed(Throwable x) + { + promise.failed(x); + } } private class ContentDecoderFactorySet implements Set diff --git a/jetty-client/src/main/java/org/eclipse/jetty/client/api/Destination.java b/jetty-client/src/main/java/org/eclipse/jetty/client/api/Destination.java index bf09e7a88d11..03cece3160af 100644 --- a/jetty-client/src/main/java/org/eclipse/jetty/client/api/Destination.java +++ b/jetty-client/src/main/java/org/eclipse/jetty/client/api/Destination.java @@ -84,5 +84,22 @@ public int getPort() { return port; } + + @Override + public boolean equals(Object obj) + { + if (this == obj) return true; + if (obj == null || getClass() != obj.getClass()) return false; + Address that = (Address)obj; + return host.equals(that.host) && port == that.port; + } + + @Override + public int hashCode() + { + int result = host.hashCode(); + result = 31 * result + port; + return result; + } } }