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.classic;
29
30 import java.io.IOException;
31 import java.net.Socket;
32
33 import javax.net.ssl.SSLSocket;
34
35 import org.apache.hc.core5.http.ClassicHttpRequest;
36 import org.apache.hc.core5.http.ClassicHttpResponse;
37 import org.apache.hc.core5.http.ContentLengthStrategy;
38 import org.apache.hc.core5.http.URIScheme;
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.CharCodingSupport;
42 import org.apache.hc.core5.http.io.HttpConnectionFactory;
43 import org.apache.hc.core5.http.io.HttpMessageParserFactory;
44 import org.apache.hc.core5.http.io.HttpMessageWriterFactory;
45
46 public class LoggingBHttpServerConnectionFactory implements HttpConnectionFactory<LoggingBHttpServerConnection> {
47
48 public static final LoggingBHttpServerConnectionFactory INSTANCE = new LoggingBHttpServerConnectionFactory();
49
50 private final String scheme;
51 private final Http1Config http1Config;
52 private final CharCodingConfig charCodingConfig;
53 private final ContentLengthStrategy incomingContentStrategy;
54 private final ContentLengthStrategy outgoingContentStrategy;
55 private final HttpMessageParserFactory<ClassicHttpRequest> requestParserFactory;
56 private final HttpMessageWriterFactory<ClassicHttpResponse> responseWriterFactory;
57
58 public LoggingBHttpServerConnectionFactory(
59 final String scheme,
60 final Http1Config http1Config,
61 final CharCodingConfig charCodingConfig,
62 final ContentLengthStrategy incomingContentStrategy,
63 final ContentLengthStrategy outgoingContentStrategy,
64 final HttpMessageParserFactory<ClassicHttpRequest> requestParserFactory,
65 final HttpMessageWriterFactory<ClassicHttpResponse> responseWriterFactory) {
66 super();
67 this.scheme = scheme;
68 this.http1Config = http1Config != null ? http1Config : Http1Config.DEFAULT;
69 this.charCodingConfig = charCodingConfig != null ? charCodingConfig : CharCodingConfig.DEFAULT;
70 this.incomingContentStrategy = incomingContentStrategy;
71 this.outgoingContentStrategy = outgoingContentStrategy;
72 this.requestParserFactory = requestParserFactory;
73 this.responseWriterFactory = responseWriterFactory;
74 }
75
76 public LoggingBHttpServerConnectionFactory(
77 final String scheme,
78 final Http1Config http1Config,
79 final CharCodingConfig charCodingConfig,
80 final HttpMessageParserFactory<ClassicHttpRequest> requestParserFactory,
81 final HttpMessageWriterFactory<ClassicHttpResponse> responseWriterFactory) {
82 this(scheme, http1Config, charCodingConfig, null, null, requestParserFactory, responseWriterFactory);
83 }
84
85 public LoggingBHttpServerConnectionFactory(
86 final String scheme,
87 final Http1Config http1Config,
88 final CharCodingConfig charCodingConfig) {
89 this(scheme, http1Config, charCodingConfig, null, null, null, null);
90 }
91
92 public LoggingBHttpServerConnectionFactory() {
93 this(null, null, null, null, null, null, null);
94 }
95
96 LoggingBHttpServerConnection createDetached(final Socket socket) {
97 return new LoggingBHttpServerConnection(
98 scheme != null ? scheme : (socket instanceof SSLSocket ? URIScheme.HTTPS.id : URIScheme.HTTP.id),
99 http1Config,
100 CharCodingSupport.createDecoder(charCodingConfig),
101 CharCodingSupport.createEncoder(charCodingConfig),
102 incomingContentStrategy,
103 outgoingContentStrategy,
104 requestParserFactory,
105 responseWriterFactory);
106 }
107
108 @Override
109 public LoggingBHttpServerConnection createConnection(final Socket socket) throws IOException {
110 final LoggingBHttpServerConnection conn = createDetached(socket);
111 conn.bind(socket);
112 return conn;
113 }
114
115
116
117
118 @Override
119 public LoggingBHttpServerConnection createConnection(final SSLSocket sslSocket, final Socket socket) throws IOException {
120 final LoggingBHttpServerConnection conn = createDetached(socket);
121 conn.bind(sslSocket, socket);
122 return conn;
123 }
124
125 }