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.http2.impl.nio.bootstrap;
29
30 import java.util.concurrent.Future;
31
32 import org.apache.hc.core5.annotation.Internal;
33 import org.apache.hc.core5.concurrent.FutureCallback;
34 import org.apache.hc.core5.function.Callback;
35 import org.apache.hc.core5.function.Decorator;
36 import org.apache.hc.core5.http.HttpHost;
37 import org.apache.hc.core5.http.impl.bootstrap.HttpAsyncRequester;
38 import org.apache.hc.core5.http.nio.AsyncClientEndpoint;
39 import org.apache.hc.core5.http2.HttpVersionPolicy;
40 import org.apache.hc.core5.pool.ManagedConnPool;
41 import org.apache.hc.core5.reactor.IOEventHandlerFactory;
42 import org.apache.hc.core5.reactor.IOReactorConfig;
43 import org.apache.hc.core5.reactor.IOSession;
44 import org.apache.hc.core5.reactor.IOSessionListener;
45 import org.apache.hc.core5.util.Timeout;
46
47
48
49
50
51
52
53 public class H2AsyncRequester extends HttpAsyncRequester {
54
55 private final HttpVersionPolicy versionPolicy;
56
57
58
59
60 @Internal
61 public H2AsyncRequester(
62 final HttpVersionPolicy versionPolicy,
63 final IOReactorConfig ioReactorConfig,
64 final IOEventHandlerFactory eventHandlerFactory,
65 final Decorator<IOSession> ioSessionDecorator,
66 final Callback<Exception> exceptionCallback,
67 final IOSessionListener sessionListener,
68 final ManagedConnPool<HttpHost, IOSession> connPool) {
69 super(ioReactorConfig, eventHandlerFactory, ioSessionDecorator, exceptionCallback, sessionListener, connPool);
70 this.versionPolicy = versionPolicy != null ? versionPolicy : HttpVersionPolicy.NEGOTIATE;
71 }
72
73 @Override
74 protected Future<AsyncClientEndpoint> doConnect(
75 final HttpHost host,
76 final Timeout timeout,
77 final Object attachment,
78 final FutureCallback<AsyncClientEndpoint> callback) {
79 return super.doConnect(host, timeout, attachment != null ? attachment : versionPolicy, callback);
80 }
81
82 }