1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package it.jnrpe.net;
17
18 import io.netty.channel.ChannelDuplexHandler;
19 import io.netty.channel.ChannelHandlerContext;
20 import io.netty.handler.timeout.IdleState;
21 import io.netty.handler.timeout.IdleStateEvent;
22 import it.jnrpe.JNRPEExecutionContext;
23 import it.jnrpe.events.EventsUtil;
24 import it.jnrpe.events.LogEvent;
25
26
27
28
29
30
31 public final class JNRPEIdleStateHandler extends ChannelDuplexHandler {
32
33
34
35
36 private final JNRPEExecutionContext jnrpeContext;
37
38
39
40
41
42
43
44 public JNRPEIdleStateHandler(final JNRPEExecutionContext ctx) {
45 this.jnrpeContext = ctx;
46 }
47
48 @Override
49 public void userEventTriggered(final ChannelHandlerContext ctx,
50 final Object evt) throws Exception {
51 if (evt instanceof IdleStateEvent) {
52 IdleStateEvent e = (IdleStateEvent) evt;
53 if (e.state() == IdleState.READER_IDLE) {
54 ctx.close();
55 EventsUtil.sendEvent(this.jnrpeContext, this, LogEvent.INFO,
56 "Read Timeout");
57 } else if (e.state() == IdleState.WRITER_IDLE) {
58 EventsUtil.sendEvent(jnrpeContext, this, LogEvent.INFO,
59 "Write Timeout");
60 ctx.close();
61 }
62 }
63 }
64 }