summaryrefslogtreecommitdiffstats
path: root/src/org/apache/http/conn/MultihomePlainSocketFactory.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/org/apache/http/conn/MultihomePlainSocketFactory.java')
-rw-r--r--src/org/apache/http/conn/MultihomePlainSocketFactory.java212
1 files changed, 0 insertions, 212 deletions
diff --git a/src/org/apache/http/conn/MultihomePlainSocketFactory.java b/src/org/apache/http/conn/MultihomePlainSocketFactory.java
deleted file mode 100644
index e9549ab..0000000
--- a/src/org/apache/http/conn/MultihomePlainSocketFactory.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/MultihomePlainSocketFactory.java $
- * $Revision: 653041 $
- * $Date: 2008-05-03 03:39:28 -0700 (Sat, 03 May 2008) $
- *
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
-
-package org.apache.http.conn;
-
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
-import java.net.Socket;
-import java.net.SocketTimeoutException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Arrays;
-
-import org.apache.http.conn.scheme.PlainSocketFactory;
-import org.apache.http.conn.scheme.SocketFactory;
-import org.apache.http.params.HttpConnectionParams;
-import org.apache.http.params.HttpParams;
-
-/**
- * Socket factory that implements a simple multi-home fail-over on connect failure,
- * provided the same hostname resolves to multiple {@link InetAddress}es. Please note
- * the {@link #connectSocket(Socket, String, int, InetAddress, int, HttpParams)}
- * method cannot be reliably interrupted by closing the socket returned by the
- * {@link #createSocket()} method.
- */
-public final class MultihomePlainSocketFactory implements SocketFactory {
-
- /**
- * The factory singleton.
- */
- private static final
- MultihomePlainSocketFactory DEFAULT_FACTORY = new MultihomePlainSocketFactory();
-
- /**
- * Gets the singleton instance of this class.
- * @return the one and only plain socket factory
- */
- public static MultihomePlainSocketFactory getSocketFactory() {
- return DEFAULT_FACTORY;
- }
-
- /**
- * Restricted default constructor.
- */
- private MultihomePlainSocketFactory() {
- super();
- }
-
-
- // non-javadoc, see interface org.apache.http.conn.SocketFactory
- public Socket createSocket() {
- return new Socket();
- }
-
- /**
- * Attempts to connects the socket to any of the {@link InetAddress}es the
- * given host name resolves to. If connection to all addresses fail, the
- * last I/O exception is propagated to the caller.
- *
- * @param sock socket to connect to any of the given addresses
- * @param host Host name to connect to
- * @param port the port to connect to
- * @param localAddress local address
- * @param localPort local port
- * @param params HTTP parameters
- *
- * @throws IOException if an error occurs during the connection
- * @throws SocketTimeoutException if timeout expires before connecting
- */
- public Socket connectSocket(Socket sock, String host, int port,
- InetAddress localAddress, int localPort,
- HttpParams params)
- throws IOException {
-
- if (host == null) {
- throw new IllegalArgumentException("Target host may not be null.");
- }
- if (params == null) {
- throw new IllegalArgumentException("Parameters may not be null.");
- }
-
- if (sock == null)
- sock = createSocket();
-
- if ((localAddress != null) || (localPort > 0)) {
-
- // we need to bind explicitly
- if (localPort < 0)
- localPort = 0; // indicates "any"
-
- InetSocketAddress isa =
- new InetSocketAddress(localAddress, localPort);
- sock.bind(isa);
- }
-
- int timeout = HttpConnectionParams.getConnectionTimeout(params);
-
- InetAddress[] inetadrs = InetAddress.getAllByName(host);
- List<InetAddress> addresses = new ArrayList<InetAddress>(inetadrs.length);
- addresses.addAll(Arrays.asList(inetadrs));
- Collections.shuffle(addresses);
-
- IOException lastEx = null;
- for (InetAddress address: addresses) {
- try {
- sock.connect(new InetSocketAddress(address, port), timeout);
- break;
- } catch (SocketTimeoutException ex) {
- throw ex;
- } catch (IOException ex) {
- // create new socket
- sock = new Socket();
- // keep the last exception and retry
- lastEx = ex;
- }
- }
- if (lastEx != null) {
- throw lastEx;
- }
- return sock;
- } // connectSocket
-
-
- /**
- * Checks whether a socket connection is secure.
- * This factory creates plain socket connections
- * which are not considered secure.
- *
- * @param sock the connected socket
- *
- * @return <code>false</code>
- *
- * @throws IllegalArgumentException if the argument is invalid
- */
- public final boolean isSecure(Socket sock)
- throws IllegalArgumentException {
-
- if (sock == null) {
- throw new IllegalArgumentException("Socket may not be null.");
- }
- // This class check assumes that createSocket() calls the constructor
- // directly. If it was using javax.net.SocketFactory, we couldn't make
- // an assumption about the socket class here.
- if (sock.getClass() != Socket.class) {
- throw new IllegalArgumentException
- ("Socket not created by this factory.");
- }
- // This check is performed last since it calls a method implemented
- // by the argument object. getClass() is final in java.lang.Object.
- if (sock.isClosed()) {
- throw new IllegalArgumentException("Socket is closed.");
- }
-
- return false;
-
- } // isSecure
-
-
- /**
- * Compares this factory with an object.
- * There is only one instance of this class.
- *
- * @param obj the object to compare with
- *
- * @return iff the argument is this object
- */
- @Override
- public boolean equals(Object obj) {
- return (obj == this);
- }
-
- /**
- * Obtains a hash code for this object.
- * All instances of this class have the same hash code.
- * There is only one instance of this class.
- */
- @Override
- public int hashCode() {
- return PlainSocketFactory.class.hashCode();
- }
-
-}