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;
29
30 import org.apache.hc.core5.annotation.Contract;
31 import org.apache.hc.core5.annotation.Internal;
32 import org.apache.hc.core5.annotation.ThreadingBehavior;
33 import org.apache.hc.core5.http.config.CharCodingConfig;
34 import org.apache.hc.core5.http.nio.AsyncPushConsumer;
35 import org.apache.hc.core5.http.nio.HandlerFactory;
36 import org.apache.hc.core5.http.protocol.HttpProcessor;
37 import org.apache.hc.core5.http2.config.H2Config;
38 import org.apache.hc.core5.http2.frame.DefaultFrameFactory;
39 import org.apache.hc.core5.reactor.ProtocolIOSession;
40 import org.apache.hc.core5.util.Args;
41
42
43
44
45
46
47 @Contract(threading = ThreadingBehavior.IMMUTABLE_CONDITIONAL)
48 @Internal
49 public final class ClientH2StreamMultiplexerFactory {
50
51 private final HttpProcessor httpProcessor;
52 private final HandlerFactory<AsyncPushConsumer> pushHandlerFactory;
53 private final H2Config h2Config;
54 private final CharCodingConfig charCodingConfig;
55 private final H2StreamListener streamListener;
56
57 public ClientH2StreamMultiplexerFactory(
58 final HttpProcessor httpProcessor,
59 final HandlerFactory<AsyncPushConsumer> pushHandlerFactory,
60 final H2Config h2Config,
61 final CharCodingConfig charCodingConfig,
62 final H2StreamListener streamListener) {
63 this.httpProcessor = Args.notNull(httpProcessor, "HTTP processor");
64 this.pushHandlerFactory = pushHandlerFactory;
65 this.h2Config = h2Config != null ? h2Config : H2Config.DEFAULT;
66 this.charCodingConfig = charCodingConfig != null ? charCodingConfig : CharCodingConfig.DEFAULT;
67 this.streamListener = streamListener;
68 }
69
70 public ClientH2StreamMultiplexerFactory(
71 final HttpProcessor httpProcessor,
72 final HandlerFactory<AsyncPushConsumer> pushHandlerFactory,
73 final H2StreamListener streamListener) {
74 this(httpProcessor, pushHandlerFactory, null, null, streamListener);
75 }
76
77 public ClientH2StreamMultiplexerFactory(
78 final HttpProcessor httpProcessor,
79 final H2StreamListener streamListener) {
80 this(httpProcessor, null, streamListener);
81 }
82
83 public ClientH2StreamMultiplexer create(final ProtocolIOSession ioSession) {
84 return new ClientH2StreamMultiplexer(ioSession, DefaultFrameFactory.INSTANCE, httpProcessor,
85 pushHandlerFactory, h2Config, charCodingConfig, streamListener);
86 }
87
88 }