org.apache.commons.httpclient.protocol
Class ControllerThreadSocketFactory

java.lang.Object
  extended by org.apache.commons.httpclient.protocol.ControllerThreadSocketFactory

public final class ControllerThreadSocketFactory
extends Object

This helper class is intedned to help work around the limitation of older Java versions (older than 1.4) that prevents from specifying a connection timeout when creating a socket. This factory executes a controller thread overssing the process of socket initialisation. If the socket constructor cannot be created within the specified time limit, the controller terminates and throws an ConnectTimeoutException

Since:
3.0
Author:
Ortwin Glueck, Oleg Kalnichevski

Nested Class Summary
static class ControllerThreadSocketFactory.SocketTask
          Helper class for wrapping socket based tasks.
 
Method Summary
static Socket createSocket(ControllerThreadSocketFactory.SocketTask task, int timeout)
           
static Socket createSocket(ProtocolSocketFactory socketfactory, String host, int port, InetAddress localAddress, int localPort, int timeout)
          This method spawns a controller thread overseeing the process of socket initialisation.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

createSocket

public static Socket createSocket(ProtocolSocketFactory socketfactory,
                                  String host,
                                  int port,
                                  InetAddress localAddress,
                                  int localPort,
                                  int timeout)
                           throws IOException,
                                  UnknownHostException,
                                  ConnectTimeoutException
This method spawns a controller thread overseeing the process of socket initialisation. If the socket constructor cannot be created within the specified time limit, the controller terminates and throws an ConnectTimeoutException

Parameters:
socketfactory -
host - the host name/IP
port - the port on the host
localAddress - the local host name/IP to bind the socket to
localPort - the port on the local machine
timeout - the timeout value to be used in milliseconds. If the socket cannot be completed within the given time limit, it will be abandoned
Returns:
a connected Socket
Throws:
IOException - if an I/O error occurs while creating the socket
UnknownHostException - if the IP address of the host cannot be determined
ConnectTimeoutException - if socket cannot be connected within the given time limit

createSocket

public static Socket createSocket(ControllerThreadSocketFactory.SocketTask task,
                                  int timeout)
                           throws IOException,
                                  UnknownHostException,
                                  ConnectTimeoutException
Parameters:
task -
timeout -
Returns:
a socket
Throws:
IOException
UnknownHostException
ConnectTimeoutException


Copyright (c) 1999-2005 - Apache Software Foundation