package com.github.kpavlov.jreactive8583.netty.pipeline; import com.solab.iso8583.IsoMessage; import com.solab.iso8583.MessageFactory; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; import io.netty.handler.timeout.IdleState; import io.netty.handler.timeout.IdleStateEvent; public class IdleEventHandler extends ChannelInboundHandlerAdapter { private final MessageFactory isoMessageFactory; public IdleEventHandler(MessageFactory isoMessageFactory) { this.isoMessageFactory = isoMessageFactory; } @Override public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception { if (evt instanceof IdleStateEvent) { IdleStateEvent e = (IdleStateEvent) evt; if (e.state() == IdleState.READER_IDLE || e.state() == IdleState.ALL_IDLE) { final IsoMessage echoMessage = createEchoMessage(); ctx.write(echoMessage); ctx.flush(); } } } private IsoMessage createEchoMessage() { return isoMessageFactory.newMessage(0x800); } }