package com.ld.igds.protocol.beibo.grain.client;
|
|
import com.ld.igds.protocol.beibo.grain.analysis.AnalysisService;
|
import com.ld.igds.util.BytesUtil;
|
import io.netty.channel.ChannelHandlerContext;
|
import io.netty.channel.SimpleChannelInboundHandler;
|
import io.netty.util.internal.logging.InternalLogger;
|
import io.netty.util.internal.logging.InternalLoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import java.net.InetSocketAddress;
|
|
/**
|
* Handles a client-side channel.
|
*/
|
|
public class ClientHandler extends SimpleChannelInboundHandler<Object> {
|
@Autowired
|
private AnalysisService analysisService;
|
private final InternalLogger log = InternalLoggerFactory.getInstance(this
|
.getClass());
|
@Override
|
public void channelActive(ChannelHandlerContext ctx) {
|
InetSocketAddress insocket = (InetSocketAddress) ctx.channel()
|
.remoteAddress();
|
log.info("贝博粮情分机成功连接,IP={},port={}", insocket.getAddress()
|
.getHostAddress(), insocket.getPort());
|
}
|
|
@Override
|
public void channelInactive(ChannelHandlerContext ctx) throws Exception {
|
super.channelInactive(ctx);
|
|
InetSocketAddress insocket = (InetSocketAddress) ctx.channel()
|
.remoteAddress();
|
|
log.info("贝博粮情分机断开连接,IP={},port={}", insocket.getAddress(),insocket.getPort());
|
}
|
|
@Override
|
public void channelRead0(ChannelHandlerContext ctx, Object msg)
|
throws Exception {
|
byte[] bytes = (byte[]) msg;
|
String result = BytesUtil.bytesToString(bytes);
|
log.info("贝博粮情分机返回信息=" + result);
|
|
InetSocketAddress insocket = (InetSocketAddress) ctx.channel().remoteAddress();
|
|
//解析
|
analysisService.analysis(result);
|
}
|
|
@Override
|
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
|
ctx.close();
|
}
|
|
}
|