package com.fzzy.protocol.bhzn.v0.server; import com.fzzy.api.utils.BytesUtil; import com.fzzy.protocol.bhzn.server.BhznGrainV2ServerUtils; import com.fzzy.protocol.fzzy.server.ServerUtils; import com.ld.io.api.*; import com.ld.io.netty.NettyServer; import lombok.extern.slf4j.Slf4j; import java.util.List; /** * @Desc: 邦海智能纯粮情协议 * @author: Andy */ @Slf4j public class BhznGrainV0ServerEngine { public static final Integer PORT = 19303; public static NettyServer ioServer = null; private static BhznGrainV0MessageConsumer defaultMessageConsumer = new BhznGrainV0MessageConsumer(); private static BhznGrainV0SessionListener defaultSessionListener = new BhznGrainV0SessionListener(); // 心跳提供 private static HeartbeatProvider heartbeatProvider = new BhznGrainV0HeartbeatImpl(); 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(BhznGrainV2ServerUtils.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 = BhznGrainV0ServerUtils.getSession(); if (null == session) { return InvokeResult.CHANNEL_CLOSED; } byte[] msg = BytesUtil.hexStrToBytes(hexStr); return session.invoke(msg); } }