package com.fzzy.protocol.bhzn.v01.server;
|
|
import com.fzzy.api.utils.BytesUtil;
|
import com.ld.io.api.*;
|
import com.ld.io.netty.NettyServer;
|
import lombok.extern.slf4j.Slf4j;
|
|
/**
|
* @Desc: 邦海智能纯粮情协议
|
* @author: Andy
|
*/
|
@Slf4j
|
|
public class BhznGrainV01ServerEngine {
|
|
public static final Integer PORT = 19304;
|
|
public static NettyServer ioServer = null;
|
|
private static BhznGrainV01MessageConsumer defaultMessageConsumer = new BhznGrainV01MessageConsumer();
|
|
private static BhznGrainV01SessionListener defaultSessionListener = new BhznGrainV01SessionListener();
|
|
// 心跳提供
|
private static HeartbeatProvider heartbeatProvider = new BhznGrainV01HeartbeatImpl();
|
|
private IoSessionQuery sessionQuery;
|
|
public static void start(Integer port) {
|
IoServerOption ioServerOption = new IoServerOption();
|
|
if (null != port) {
|
ioServerOption.setPort(port);
|
} else {
|
port = PORT;
|
ioServerOption.setPort(port);
|
}
|
|
//确认结尾标志-没有固定结束符号
|
|
//确认结尾标志
|
//ioServerOption.setDelimiter(BhznGrainV2ServerUtils.MSG_END.getBytes());
|
//ioServerOption.setSplitDecoderType(SplitByteDecoderType.NO_LIMIT);
|
|
ioServerOption.setDelimiter(BhznGrainV01ServerUtils.MSG_END.getBytes());
|
ioServerOption.setSplitDecoderType(SplitByteDecoderType.DELIMITER_SYMBOL);
|
// 配置系统心跳间隔
|
ioServerOption.setReaderIdleTime(5 * 60);
|
|
NettyServer ioServer = new NettyServer(ioServerOption, defaultMessageConsumer, defaultSessionListener, heartbeatProvider);
|
ioServer.startup();
|
|
|
log.info("* ");
|
log.info("* ========================");
|
log.info("* ");
|
log.info("* [GRAIN-SERVER:BHZN_GRAIN-V0,PORT={}]" + port);
|
log.info("* ");
|
log.info("* ========================");
|
log.info("* ");
|
|
System.out.println("* ========================");
|
System.out.println("* ");
|
System.out.println("* [GRAIN-SERVER:BHZN_GRAIN-V0,PORT={}]" + port);
|
System.out.println("* ");
|
System.out.println("* ========================");
|
}
|
|
/**
|
* 直接使用内存的Session执行
|
*/
|
public static InvokeResult pushByMin(String hexStr) {
|
|
IoSession session = BhznGrainV01ServerUtils.getSession();
|
|
if (null == session) {
|
return InvokeResult.CHANNEL_CLOSED;
|
}
|
byte[] msg = BytesUtil.hexStrToBytes(hexStr);
|
return session.invoke(msg);
|
}
|
|
}
|