1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 package org.apache.commons.httpclient.protocol;
33
34 import java.io.IOException;
35 import java.net.InetAddress;
36 import java.net.Socket;
37 import java.net.UnknownHostException;
38
39 /***
40 * A factory for creating Sockets.
41 *
42 * <p>Both {@link java.lang.Object#equals(java.lang.Object) Object.equals()} and
43 * {@link java.lang.Object#hashCode() Object.hashCode()} should be overridden appropriately.
44 * Protocol socket factories are used to uniquely identify <code>Protocol</code>s and
45 * <code>HostConfiguration</code>s, and <code>equals()</code> and <code>hashCode()</code> are
46 * required for the correct operation of some connection managers.</p>
47 *
48 * @see Protocol
49 *
50 * @author Michael Becke
51 * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
52 *
53 * @since 2.0
54 */
55 public interface ProtocolSocketFactory {
56
57 /***
58 * Gets a new socket connection to the given host.
59 *
60 * @param host the host name/IP
61 * @param port the port on the host
62 * @param clientHost the local host name/IP to bind the socket to
63 * @param clientPort the port on the local machine
64 *
65 * @return Socket a new socket
66 *
67 * @throws IOException if an I/O error occurs while creating the socket
68 * @throws UnknownHostException if the IP address of the host cannot be
69 * determined
70 */
71 Socket createSocket(
72 String host,
73 int port,
74 InetAddress clientHost,
75 int clientPort
76 ) throws IOException, UnknownHostException;
77
78 /***
79 * Gets a new socket connection to the given host.
80 *
81 * @param host the host name/IP
82 * @param port the port on the host
83 *
84 * @return Socket a new socket
85 *
86 * @throws IOException if an I/O error occurs while creating the socket
87 * @throws UnknownHostException if the IP address of the host cannot be
88 * determined
89 */
90 Socket createSocket(
91 String host,
92 int port
93 ) throws IOException, UnknownHostException;
94
95 }