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.AsyncServerExchangeHandler;
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 ServerH2StreamMultiplexerFactory {
50
51 private final HttpProcessor httpProcessor;
52 private final HandlerFactory<AsyncServerExchangeHandler> exchangeHandlerFactory;
53 private final H2Config h2Config;
54 private final CharCodingConfig charCodingConfig;
55 private final H2StreamListener streamListener;
56
57 public ServerH2StreamMultiplexerFactory(
58 final HttpProcessor httpProcessor,
59 final HandlerFactory<AsyncServerExchangeHandler> exchangeHandlerFactory,
60 final H2Config h2Config,
61 final CharCodingConfig charCodingConfig,
62 final H2StreamListener streamListener) {
63 this.httpProcessor = Args.notNull(httpProcessor, "HTTP processor");
64 this.exchangeHandlerFactory = Args.notNull(exchangeHandlerFactory, "Exchange handler factory");
65 this.h2Config = h2Config != null ? h2Config : H2Config.DEFAULT;
66 this.charCodingConfig = charCodingConfig != null ? charCodingConfig : CharCodingConfig.DEFAULT;
67 this.streamListener = streamListener;
68 }
69
70 public ServerH2StreamMultiplexer create(final ProtocolIOSession ioSession) {
71 return new ServerH2StreamMultiplexer(
72 ioSession,
73 DefaultFrameFactory.INSTANCE,
74 httpProcessor,
75 exchangeHandlerFactory,
76 charCodingConfig,
77 h2Config,
78 streamListener);
79 }
80
81 }