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 package org.apache.hc.core5.testing.nio;
29
30 import java.io.IOException;
31 import java.util.concurrent.Future;
32
33 import javax.net.ssl.SSLContext;
34
35 import org.apache.hc.core5.concurrent.FutureContribution;
36 import org.apache.hc.core5.concurrent.BasicFuture;
37 import org.apache.hc.core5.concurrent.FutureCallback;
38 import org.apache.hc.core5.http.HttpHost;
39 import org.apache.hc.core5.http.config.CharCodingConfig;
40 import org.apache.hc.core5.http.config.Http1Config;
41 import org.apache.hc.core5.http.impl.DefaultConnectionReuseStrategy;
42 import org.apache.hc.core5.http.impl.HttpProcessors;
43 import org.apache.hc.core5.http.protocol.HttpProcessor;
44 import org.apache.hc.core5.reactor.IOReactorConfig;
45 import org.apache.hc.core5.reactor.IOSession;
46 import org.apache.hc.core5.reactor.ssl.SSLSessionInitializer;
47 import org.apache.hc.core5.reactor.ssl.SSLSessionVerifier;
48 import org.apache.hc.core5.util.Timeout;
49
50 public class Http1TestClient extends AsyncRequester {
51
52 private final SSLContext sslContext;
53 private final SSLSessionInitializer sslSessionInitializer;
54 private final SSLSessionVerifier sslSessionVerifier;
55
56 public Http1TestClient(
57 final IOReactorConfig ioReactorConfig,
58 final SSLContext sslContext,
59 final SSLSessionInitializer sslSessionInitializer,
60 final SSLSessionVerifier sslSessionVerifier) throws IOException {
61 super(ioReactorConfig);
62 this.sslContext = sslContext;
63 this.sslSessionInitializer = sslSessionInitializer;
64 this.sslSessionVerifier = sslSessionVerifier;
65 }
66
67 public Http1TestClient() throws IOException {
68 this(IOReactorConfig.DEFAULT, null, null, null);
69 }
70
71 public void start(
72 final HttpProcessor httpProcessor,
73 final Http1Config http1Config) throws IOException {
74 execute(new InternalClientHttp1EventHandlerFactory(
75 httpProcessor,
76 http1Config,
77 CharCodingConfig.DEFAULT,
78 DefaultConnectionReuseStrategy.INSTANCE,
79 sslContext,
80 sslSessionInitializer,
81 sslSessionVerifier));
82 }
83
84 public void start(final Http1Config http1Config) throws IOException {
85 start(HttpProcessors.client(), http1Config);
86 }
87
88 public void start() throws IOException {
89 start(Http1Config.DEFAULT);
90 }
91
92 public Future<ClientSessionEndpoint> connect(
93 final HttpHost host,
94 final Timeout timeout,
95 final FutureCallback<ClientSessionEndpoint> callback) {
96 final BasicFuture<ClientSessionEndpoint> future = new BasicFuture<>(callback);
97 requestSession(host, timeout, new FutureContribution<IOSession>(future) {
98
99 @Override
100 public void completed(final IOSession session) {
101 future.completed(new ClientSessionEndpoint(session));
102 }
103
104 });
105 return future;
106 }
107
108 public Future<ClientSessionEndpoint> connect(final HttpHost host, final Timeout timeout) {
109 return connect(host, timeout, null);
110 }
111
112 public Future<ClientSessionEndpoint> connect(final String hostname, final int port, final Timeout timeout) {
113 return connect(new HttpHost(hostname, port), timeout, null);
114 }
115
116 }