HttpSnoopServerHandler Class — netty Architecture
Architecture documentation for the HttpSnoopServerHandler class in HttpSnoopServerHandler.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 0dc0edc6_a74a_0a99_9be5_a85731fba901["HttpSnoopServerHandler"] ce2a2fa9_4134_875c_6be6_319b248b66c6["HttpSnoopServerHandler.java"] 0dc0edc6_a74a_0a99_9be5_a85731fba901 -->|defined in| ce2a2fa9_4134_875c_6be6_319b248b66c6 5e664409_6ead_fb29_fa51_af144dcf456d["channelReadComplete()"] 0dc0edc6_a74a_0a99_9be5_a85731fba901 -->|method| 5e664409_6ead_fb29_fa51_af144dcf456d 38a6ac21_703f_7d5d_2772_e7831e8a40e0["channelRead0()"] 0dc0edc6_a74a_0a99_9be5_a85731fba901 -->|method| 38a6ac21_703f_7d5d_2772_e7831e8a40e0 0aad675e_3307_6c46_ca2d_aa6d08dda7eb["appendDecoderResult()"] 0dc0edc6_a74a_0a99_9be5_a85731fba901 -->|method| 0aad675e_3307_6c46_ca2d_aa6d08dda7eb 47526183_e8b0_7ed5_2265_4a4123e1c6fb["writeResponse()"] 0dc0edc6_a74a_0a99_9be5_a85731fba901 -->|method| 47526183_e8b0_7ed5_2265_4a4123e1c6fb d078845a_94ac_2931_f123_c42b07e3a660["send100Continue()"] 0dc0edc6_a74a_0a99_9be5_a85731fba901 -->|method| d078845a_94ac_2931_f123_c42b07e3a660 f7bfde77_a892_5464_c0d7_258b56b8f3cb["exceptionCaught()"] 0dc0edc6_a74a_0a99_9be5_a85731fba901 -->|method| f7bfde77_a892_5464_c0d7_258b56b8f3cb
Relationship Graph
Source Code
example/src/main/java/io/netty/example/http/snoop/HttpSnoopServerHandler.java lines 48–197
public class HttpSnoopServerHandler extends SimpleChannelInboundHandler<Object> {
private HttpRequest request;
/** Buffer that stores the response content */
private final StringBuilder buf = new StringBuilder();
@Override
public void channelReadComplete(ChannelHandlerContext ctx) {
ctx.flush();
}
@Override
protected void channelRead0(ChannelHandlerContext ctx, Object msg) {
if (msg instanceof HttpRequest) {
HttpRequest request = this.request = (HttpRequest) msg;
if (HttpUtil.is100ContinueExpected(request)) {
send100Continue(ctx);
}
buf.setLength(0);
buf.append("WELCOME TO THE WILD WILD WEB SERVER\r\n");
buf.append("===================================\r\n");
buf.append("VERSION: ").append(request.protocolVersion()).append("\r\n");
buf.append("HOSTNAME: ").append(request.headers().get(HttpHeaderNames.HOST, "unknown")).append("\r\n");
buf.append("REQUEST_URI: ").append(request.uri()).append("\r\n\r\n");
HttpHeaders headers = request.headers();
if (!headers.isEmpty()) {
for (Map.Entry<String, String> h: headers) {
CharSequence key = h.getKey();
CharSequence value = h.getValue();
buf.append("HEADER: ").append(key).append(" = ").append(value).append("\r\n");
}
buf.append("\r\n");
}
QueryStringDecoder queryStringDecoder = new QueryStringDecoder(request.uri());
Map<String, List<String>> params = queryStringDecoder.parameters();
if (!params.isEmpty()) {
for (Entry<String, List<String>> p: params.entrySet()) {
String key = p.getKey();
List<String> vals = p.getValue();
for (String val : vals) {
buf.append("PARAM: ").append(key).append(" = ").append(val).append("\r\n");
}
}
buf.append("\r\n");
}
appendDecoderResult(buf, request);
}
if (msg instanceof HttpContent) {
HttpContent httpContent = (HttpContent) msg;
ByteBuf content = httpContent.content();
if (content.isReadable()) {
buf.append("CONTENT: ");
buf.append(content.toString(CharsetUtil.UTF_8));
buf.append("\r\n");
appendDecoderResult(buf, request);
}
if (msg instanceof LastHttpContent) {
buf.append("END OF CONTENT\r\n");
LastHttpContent trailer = (LastHttpContent) msg;
if (!trailer.trailingHeaders().isEmpty()) {
buf.append("\r\n");
for (CharSequence name: trailer.trailingHeaders().names()) {
for (CharSequence value: trailer.trailingHeaders().getAll(name)) {
buf.append("TRAILING HEADER: ");
buf.append(name).append(" = ").append(value).append("\r\n");
}
}
buf.append("\r\n");
}
if (!writeResponse(trailer, ctx)) {
Source
Frequently Asked Questions
What is the HttpSnoopServerHandler class?
HttpSnoopServerHandler is a class in the netty codebase, defined in example/src/main/java/io/netty/example/http/snoop/HttpSnoopServerHandler.java.
Where is HttpSnoopServerHandler defined?
HttpSnoopServerHandler is defined in example/src/main/java/io/netty/example/http/snoop/HttpSnoopServerHandler.java at line 48.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free