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