1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.waarp.openr66.protocol.monitoring;
22
23 import io.netty.channel.ChannelHandlerContext;
24 import io.netty.channel.SimpleChannelInboundHandler;
25 import io.netty.handler.codec.http.HttpObject;
26 import io.netty.handler.codec.http.HttpResponse;
27 import io.netty.handler.codec.http.HttpResponseStatus;
28 import io.netty.handler.codec.http.LastHttpContent;
29 import org.waarp.common.logging.WaarpLogger;
30 import org.waarp.common.logging.WaarpLoggerFactory;
31
32 public class HttpMonitoringExporterClientHandler
33 extends SimpleChannelInboundHandler<HttpObject> {
34 private static final WaarpLogger logger =
35 WaarpLoggerFactory.getLogger(HttpMonitoringExporterClientHandler.class);
36
37 private final HttpMonitoringExporterClient httpMonitoringExporterClient;
38
39 public HttpMonitoringExporterClientHandler(
40 final HttpMonitoringExporterClient httpMonitoringExporterClient) {
41 this.httpMonitoringExporterClient = httpMonitoringExporterClient;
42 }
43
44 @Override
45 protected void channelRead0(final ChannelHandlerContext ctx,
46 final HttpObject msg) throws Exception {
47 if (msg instanceof HttpResponse) {
48 final HttpResponse response = (HttpResponse) msg;
49
50 final HttpResponseStatus status = response.status();
51
52 httpMonitoringExporterClient.setStatus(
53 response.status().code() == 200 || response.status().code() == 201);
54 }
55 if (msg instanceof LastHttpContent &&
56 !httpMonitoringExporterClient.isKeepConnection()) {
57 ctx.close();
58 }
59 }
60
61 @Override
62 public void exceptionCaught(final ChannelHandlerContext ctx,
63 final Throwable cause) {
64 logger.error(cause);
65 httpMonitoringExporterClient.setStatus(false);
66 ctx.channel().close();
67 }
68 }