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); } }