package chat.server.moquette;
|
|
import org.apache.log4j.Logger;
|
|
import chat.server.moquette.message.ClientID;
|
import io.netty.channel.ChannelDuplexHandler;
|
import io.netty.channel.ChannelHandlerContext;
|
import io.netty.handler.timeout.IdleState;
|
import io.netty.handler.timeout.IdleStateEvent;
|
|
|
public class MqttIdleTimeoutHandler extends ChannelDuplexHandler {
|
|
private static Logger logger;
|
|
static {
|
logger = Logger.getLogger(MqttIdleTimeoutHandler.class);
|
}
|
|
@Override
|
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
|
if (evt instanceof IdleStateEvent) {
|
IdleState e = ((IdleStateEvent) evt).state();
|
if (e == IdleState.READER_IDLE) {
|
ClientID clientId = ClientID.valueOf(ctx.channel());
|
logger.info("Firing channel inactive event. MqttClientId = " + clientId);
|
|
ctx.fireChannelInactive();
|
ctx.close();
|
}
|
}
|
else {
|
if (logger.isDebugEnabled()) {
|
ClientID clientId = ClientID.valueOf(ctx.channel());
|
logger.debug("Firing Netty event. MqttClientId = " + clientId + ", eventClass = " + evt.getClass().getName());
|
}
|
|
super.userEventTriggered(ctx, evt);
|
}
|
}
|
|
}
|