已重命名7个文件
已删除2个文件
已添加8个文件
已修改2个文件
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.protocol.beibo; |
| | | |
| | | import com.ld.igds.data.ConfigData; |
| | | import com.ld.igds.protocol.beibo.grainv1.server.BeiboGrainV1ServerEngine; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.boot.CommandLineRunner; |
| | | import org.springframework.core.annotation.Order; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | /** |
| | | * é
ç½®éç³»ç»èªå¨å¯å¨æå¡ -- æ§è¡é¡ºåº20-29 |
| | | */ |
| | | @Component(ServerRunner.BEAN_ID) |
| | | @Order(value = 25) |
| | | public class ServerRunner implements CommandLineRunner { |
| | | |
| | | public static final String BEAN_ID = "beibo.serverRunnerV1"; |
| | | |
| | | @Autowired |
| | | private ConfigData configData; |
| | | |
| | | @Autowired |
| | | private BeiboGrainV1ServerEngine beiboGrainV1ServerEngine; |
| | | |
| | | @Override |
| | | public void run(String... strings) throws Exception { |
| | | |
| | | if (configData.getActive().indexOf("pro") >= 0) { |
| | | |
| | | beiboGrainV1ServerEngine.start(BeiboGrainV1ServerEngine.PORT); |
| | | } |
| | | if (configData.getActive().indexOf("dev") >= 0) { |
| | | beiboGrainV1ServerEngine.start(BeiboGrainV1ServerEngine.PORT); |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.protocol.beibo.grainv1; |
| | | |
| | | import com.ld.igds.io.RemoteGrainService; |
| | | import com.ld.igds.io.constant.OrderRespEnum; |
| | | import com.ld.igds.io.constant.ProtocolEnum; |
| | | import com.ld.igds.io.request.CheckGrainRequest; |
| | | import com.ld.igds.io.response.GrainResponse; |
| | | import com.ld.igds.protocol.beibo.grainv1.builder.CommandBuild; |
| | | import com.ld.igds.protocol.beibo.grainv1.server.BeiboGrainV1ServerEngine; |
| | | import com.ld.io.api.InvokeResult; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | /** |
| | | * è´åç²®æ
åæºåè®® |
| | | * |
| | | * @author czt |
| | | */ |
| | | @Slf4j |
| | | @Component(RemoteGrainServiceImpl.BEAN_ID) |
| | | public class RemoteGrainServiceImpl implements RemoteGrainService { |
| | | |
| | | public static final String BEAN_ID = "beiboGrain.remoteGrainService"; |
| | | |
| | | @Autowired |
| | | private BeiboGrainV1ServerEngine beiboGrainV1ServerEngine; |
| | | |
| | | @Override |
| | | public String getProtocol() { |
| | | return ProtocolEnum.TCP_BEIBO_GRAIN_V1.getCode(); |
| | | } |
| | | |
| | | @Override |
| | | public GrainResponse checkGrain(CheckGrainRequest request) { |
| | | try { |
| | | //çæç²®æ
å½ä»¤ |
| | | String hexStr = CommandBuild.getInstance().getMsgCheck(request.getSerId()); |
| | | |
| | | // åéå½ä»¤ |
| | | InvokeResult result = beiboGrainV1ServerEngine.pushByMin(hexStr); |
| | | |
| | | log.error("å¹³å°------>>>>åæºï¼ç²®æ
æ£æµ-{}", hexStr); |
| | | |
| | | // å°è£
è¿åä¿¡æ¯ |
| | | if (InvokeResult.SUCCESS == result) { |
| | | return new GrainResponse(OrderRespEnum.ORDER_SUCCESS.getCode(), |
| | | "ç²®æ
ééå½ä»¤åéæåï¼"); |
| | | } else { |
| | | log.error("å¹³å°------>>>>åæºï¼ç²®æ
æ£æµ-失败{}", result.getMessage()); |
| | | return new GrainResponse(OrderRespEnum.ORDER_ERROR.getCode(), |
| | | "å½ä»¤åéå¼å¸¸ï¼" + result.getMessage()); |
| | | } |
| | | |
| | | } catch (Exception e) { |
| | | log.error("ç²®æ
æ£æµå¼å¸¸ï¼{}", e); |
| | | return new GrainResponse(OrderRespEnum.ORDER_ERROR.getCode(), "å端å¼å¸¸ï¼" + e.getMessage()); |
| | | } |
| | | } |
| | | } |
ÎļþÃû´Ó igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grain/analysis/AnalysisService.java ÐÞ¸Ä |
| | |
| | | package com.ld.igds.protocol.beibo.grain.analysis; |
| | | package com.ld.igds.protocol.beibo.grainv1.analysis; |
| | | |
| | | import com.ld.igds.common.CoreCommonService; |
| | | import com.ld.igds.common.CoreSerService; |
| | |
| | | import com.ld.igds.models.Grain; |
| | | import com.ld.igds.order.ExeOrderService; |
| | | import com.ld.igds.order.data.ExeRequest; |
| | | import com.ld.igds.protocol.beibo.grain.builder.ReMessage; |
| | | import com.ld.igds.protocol.beibo.grain.builder.ReMessageBuilder; |
| | | import com.ld.igds.protocol.beibo.grain.util.BeiboGrainServerUtils; |
| | | import com.ld.igds.protocol.beibo.grainv1.builder.ReMessage; |
| | | import com.ld.igds.protocol.beibo.grainv1.builder.ReMessageBuilder; |
| | | import com.ld.igds.protocol.beibo.grainv1.util.BeiboGrainServerUtils; |
| | | import com.ld.igds.util.BytesUtil; |
| | | import com.ld.igds.util.ContextUtil; |
| | | import com.ld.igds.warn.WarnUtils; |
| | |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.*; |
| | | |
| | | /** |
| | |
| | | @Autowired |
| | | private ExeOrderService exeOrderService; |
| | | |
| | | |
| | | public static Map<String, Map<String, String>> contextMap = new HashMap<>(); |
| | | |
| | | public static double ERROR_CHECK_TAG = -100.0; |
| | |
| | | /** |
| | | * 00000000FFEB90FEAA 41 E821EC21EA21EC21ED21EC21E921E221E921E921E921EC21E921ED21F021E521E521E221E421E321E321E121DE21D721E021DD21DC21DF21FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF |
| | | * |
| | | * @param result |
| | | * @param hexStr |
| | | */ |
| | | public void analysis(String result) { |
| | | public void analysis(String ip, int port, String hexStr) { |
| | | |
| | | log.info("åæº------->>å¹³å°ï¼ä¿¡æ¯æ¥æ={}", result); |
| | | ReMessage reMessage = ReMessageBuilder.getInstance().buildMessage(result); |
| | | ReMessage reMessage = ReMessageBuilder.getInstance().buildMessage(hexStr); |
| | | |
| | | log.info("åæº------->>å¹³å°ï¼ä¿¡æ¯æ¥æ={}", reMessage); |
| | | |
| | | if (!BeiboGrainServerUtils.MSG_START.startsWith(reMessage.getStartStr())) { |
| | | log.error("åæº------->>å¹³å°ï¼è§£æç²®æ
å¤±è´¥ï¼æ¥æèµ·å§ç¬¦={}é误ï¼ä¸è§£æ", reMessage.getStartStr()); |
| | | } |
| | | |
| | | |
| | | //æ ¹æ®åæºå°åè·ååæºä¿¡æ¯ |
| | | DeviceSer ser = coreSerService.getCacheSer(ContextUtil.getDefaultCompanyId(), reMessage.getSerId()); |
ÎļþÃû´Ó igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grain/builder/CommandBuild.java ÐÞ¸Ä |
| | |
| | | package com.ld.igds.protocol.beibo.grain.builder; |
| | | package com.ld.igds.protocol.beibo.grainv1.builder; |
| | | |
| | | import com.ld.igds.protocol.beibo.grain.util.BeiboGrainServerUtils; |
| | | import com.ld.igds.protocol.beibo.grainv1.util.BeiboGrainServerUtils; |
| | | import com.ld.igds.util.BytesUtil; |
| | | |
| | | /** |
ÎļþÃû´Ó igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grain/builder/ReMessage.java ÐÞ¸Ä |
| | |
| | | package com.ld.igds.protocol.beibo.grain.builder; |
| | | package com.ld.igds.protocol.beibo.grainv1.builder; |
| | | |
| | | import lombok.Data; |
| | | import java.util.Date; |
| | |
| | | @Data |
| | | public class ReMessage { |
| | | |
| | | |
| | | private String ip; |
| | | |
| | | private int port; |
| | | |
| | | private String startStr; //èµ·å§ç¬¦ |
| | | |
| | | private String serId; //åæºå°å |
ÎļþÃû´Ó igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grain/builder/ReMessageBuilder.java ÐÞ¸Ä |
| | |
| | | package com.ld.igds.protocol.beibo.grain.builder; |
| | | package com.ld.igds.protocol.beibo.grainv1.builder; |
| | | |
| | | import com.ld.igds.protocol.beibo.grain.util.BeiboGrainServerUtils; |
| | | import com.ld.igds.protocol.beibo.grainv1.util.BeiboGrainServerUtils; |
| | | import com.ld.igds.util.BytesUtil; |
| | | |
| | | /** |
| | |
| | | int i = BytesUtil.hexToInt(str); |
| | | String serId = String.valueOf(i - BeiboGrainServerUtils.BM); |
| | | message.setSerId(serId); |
| | | |
| | | //ç²®æ
æ°æ® |
| | | str = strMsg.substring(10*2-1, 1034*2 -1); |
| | | message.setGrainStr(str); |
| | | |
| | | //æ¸©åº¦æ°æ® |
| | | str = strMsg.substring(1034*2 -1, 1052*2-1); |
| | | message.setThStr(str); |
| | | |
| | | //æ©å
æ°æ® |
| | | str = strMsg.substring(strMsg.length()-14*2, strMsg.length()-4*2); |
| | | message.setExpand(str); |
| | | |
| | | //æ£éªç |
| | | str = strMsg.substring(strMsg.length()-4*2); |
| | | message.setHexCrc16(str); |
| | | |
| | | return message; |
| | | } |
ÎļþÃû´Ó igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grain/client/BeiboClientEngine.java ÐÞ¸Ä |
| | |
| | | package com.ld.igds.protocol.beibo.grain.client; |
| | | package com.ld.igds.protocol.beibo.grainv1.client; |
| | | |
| | | import com.ld.igds.util.BytesUtil; |
| | | import com.ld.io.api.InvokeResult; |
| | |
| | | import io.netty.channel.socket.oio.OioSocketChannel; |
| | | import io.netty.handler.codec.bytes.ByteArrayDecoder; |
| | | import io.netty.handler.codec.bytes.ByteArrayEncoder; |
| | | import io.netty.util.internal.logging.InternalLogger; |
| | | import io.netty.util.internal.logging.InternalLoggerFactory; |
| | | |
| | | /** |
| | | * è´åç²®æ
åè®®ï¼åæºä¸ºæå¡ç«¯ï¼å¹³å°ä¸ºå®¢æ·ç«¯ä¸»å¨è¿æ¥ |
| | |
| | | * @author czt |
| | | */ |
| | | public class BeiboClientEngine implements Runnable { |
| | | |
| | | private final InternalLogger log = InternalLoggerFactory.getInstance(this.getClass()); |
| | | |
| | | private String host; |
| | | private int port; |
| | |
| | | public void startRun() throws Exception { |
| | | EventLoopGroup group = new OioEventLoopGroup(); |
| | | Bootstrap b = new Bootstrap(); |
| | | // b.option(ChannelOption.SO_KEEPALIVE, true); |
| | | // b.option(ChannelOption.SO_KEEPALIVE, true); |
| | | b.group(group).channel(OioSocketChannel.class) |
| | | .handler(new ChannelInitializer<SocketChannel>() { |
| | | @Override |
| | | protected void initChannel(SocketChannel ch) |
| | | throws Exception { |
| | | ChannelPipeline p = ch.pipeline(); |
| | | // å符串解ç å ç¼ç |
| | | // å符串解ç åç¼ç |
| | | p.addLast("decoder", new ByteArrayDecoder()); |
| | | p.addLast("encoder", new ByteArrayEncoder()); |
| | | // èªå·±çé»è¾Handler |
| | |
| | | // åèµ·å¼æ¥è¿æ¥è¯·æ±ï¼ç»å®è¿æ¥ç«¯å£åhostä¿¡æ¯ |
| | | ChannelFuture channelFuture = b.connect(host, port); |
| | | this.channel = channelFuture.channel(); |
| | | // channelFuture.channel().closeFuture().sync(); |
| | | // channelFuture.channel().closeFuture().sync(); |
| | | |
| | | channelFuture.addListener(new ChannelFutureListener() { |
| | | @Override |
| | | public void operationComplete(ChannelFuture arg0) throws Exception { |
| | | if (channelFuture.isSuccess()) { |
| | | System.out.println("è¿æ¥æå¡å¨æå"); |
| | | log.info("è¿æ¥æå¡å¨æå"); |
| | | } else { |
| | | System.out.println("è¿æ¥æå¡å¨å¤±è´¥"); |
| | | log.info("è¿æ¥æå¡å¨å¤±è´¥"); |
| | | channelFuture.cause().printStackTrace(); |
| | | group.shutdownGracefully(); // å
³é线ç¨ç» |
| | | } |
ÎļþÃû´Ó igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grain/client/ClientHandler.java ÐÞ¸Ä |
| | |
| | | package com.ld.igds.protocol.beibo.grain.client; |
| | | package com.ld.igds.protocol.beibo.grainv1.client; |
| | | |
| | | import com.ld.igds.protocol.beibo.grain.analysis.AnalysisService; |
| | | import com.ld.igds.protocol.beibo.grainv1.analysis.AnalysisService; |
| | | import com.ld.igds.util.BytesUtil; |
| | | import com.ld.igds.util.SpringUtil; |
| | | 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; |
| | | |
| | |
| | | public void channelActive(ChannelHandlerContext ctx) { |
| | | InetSocketAddress insocket = (InetSocketAddress) ctx.channel() |
| | | .remoteAddress(); |
| | | log.info("è´åç²®æ
åæºæåè¿æ¥ï¼IP={},port={}", insocket.getAddress() |
| | | log.info("åæºæåè¿æ¥ï¼IP={},port={}", insocket.getAddress() |
| | | .getHostAddress(), insocket.getPort()); |
| | | } |
| | | |
| | |
| | | InetSocketAddress insocket = (InetSocketAddress) ctx.channel() |
| | | .remoteAddress(); |
| | | |
| | | log.info("è´åç²®æ
åæºæå¼è¿æ¥ï¼IP={},port={}", insocket.getAddress(),insocket.getPort()); |
| | | log.info("åæºæå¼è¿æ¥ï¼IP={},port={}", insocket.getAddress(),insocket.getPort()); |
| | | } |
| | | |
| | | @Override |
| | |
| | | throws Exception { |
| | | byte[] bytes = (byte[]) msg; |
| | | String result = BytesUtil.bytesToString(bytes); |
| | | log.info("è´åç²®æ
åæºè¿åä¿¡æ¯=" + result); |
| | | log.info("åæºè¿åä¿¡æ¯=" + result); |
| | | |
| | | InetSocketAddress insocket = (InetSocketAddress) ctx.channel().remoteAddress(); |
| | | // InetSocketAddress insocket = (InetSocketAddress) ctx.channel().remoteAddress(); |
| | | |
| | | //è§£æ |
| | | if (null == analysisService) { |
| | | analysisService = (AnalysisService) SpringUtil.getBean(AnalysisService.BEAN_ID); |
| | | } |
| | | analysisService.analysis(result); |
| | | // analysisService.analysis(result); |
| | | } |
| | | |
| | | @Override |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /** |
| | | * è´åç²®æ
åè®®-åæºä¸ºæå¡ç«¯ |
| | | */ |
| | | package com.ld.igds.protocol.beibo.grainv1; |
| | | |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.protocol.beibo.grainv1.server; |
| | | |
| | | import com.ld.io.api.HeartbeatProvider; |
| | | import com.ld.io.api.IoSession; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * æä¾å¿è·³ä¿¡æ¯ |
| | | * |
| | | * @author czt |
| | | */ |
| | | @Slf4j |
| | | @Service |
| | | public class BeiboGrainV1HeartbeatImpl implements HeartbeatProvider { |
| | | |
| | | @Override |
| | | public byte[] provide(IoSession session) { |
| | | |
| | | |
| | | //ç´æ¥æ ¹æ®ä¸»æºSESSIOn夿 |
| | | IoSession session1 = BeiboGrainV1ServerUtils.getSession(); |
| | | |
| | | Long lastBeatTime = BeiboGrainV1ServerUtils.getHearBeat(session1); |
| | | |
| | | if (null == lastBeatTime) { |
| | | return null; |
| | | } |
| | | |
| | | //妿æå䏿¬¡ç»ç«¯å¿è·³æ¶é´è·ç¦»å½åæ¶é´å¤§äº ç»ç«¯å¿è·³æ¶é´ç3次ï¼åå¤æä¸ºç¦»çº¿ |
| | | long deTime = System.currentTimeMillis() - lastBeatTime; |
| | | |
| | | if (deTime > (BeiboGrainV1ServerUtils.HEART_BEAT_TIME * 3 * 1000)) { |
| | | log.info("-----------è¶
è¿{}ç§æªè·åå°å¿è·³ä¿¡æ¯ï¼å¤å®ç»ç«¯ç¦»çº¿ï¼è¸¢åºè¿æ¥------------{}-{}", deTime, session.getAddress(), session.getPort()); |
| | | |
| | | session.destroy(); |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.protocol.beibo.grainv1.server; |
| | | |
| | | import com.ld.igds.protocol.beibo.grainv1.analysis.AnalysisService; |
| | | import com.ld.igds.util.BytesUtil; |
| | | import com.ld.io.api.IoMsgConsumer; |
| | | import com.ld.io.api.IoSession; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | @Slf4j |
| | | @Service |
| | | public class BeiboGrainV1MessageConsumer implements IoMsgConsumer { |
| | | |
| | | |
| | | @Autowired |
| | | private AnalysisService analysisService; |
| | | |
| | | /** |
| | | * å¤çæ¶æ¯ |
| | | * |
| | | * @param ioSession |
| | | * @param bytes |
| | | */ |
| | | @Override |
| | | public void consume(IoSession ioSession, byte[] bytes) { |
| | | if (null == bytes) { |
| | | log.error("Reply bytes is null"); |
| | | return; |
| | | } |
| | | |
| | | //æ·»å ä¿¡æ¯å¿è·³æ è®° |
| | | BeiboGrainV1ServerUtils.addHeartBeat(ioSession); |
| | | |
| | | //é»è®¤è®¾ç½®ä¸»é讯æå¡ |
| | | BeiboGrainV1ServerUtils.addSession(ioSession); |
| | | |
| | | try { |
| | | String hexStr = BytesUtil.bytesToString(bytes); |
| | | log.info("主æºè¿åæ¥æ------->>å¹³å°ï¼" + hexStr); |
| | | |
| | | analysisService.analysis(ioSession.getAddress(), ioSession.getPort(), hexStr); |
| | | } catch (Exception e) { |
| | | log.error(e.getMessage(), e); |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.protocol.beibo.grainv1.server; |
| | | |
| | | import com.ld.igds.util.BytesUtil; |
| | | import com.ld.io.api.*; |
| | | import com.ld.io.netty.NettyServer; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @Desc: è´åç²®æ
åè®®-䏲壿å¡å¨å®¢æ·ç«¯ |
| | | * @author: czt |
| | | * @update-time: 2023/09/27 |
| | | */ |
| | | @Slf4j |
| | | @Service |
| | | public class BeiboGrainV1ServerEngine { |
| | | |
| | | public static final Integer PORT = 9311; |
| | | |
| | | @Autowired |
| | | private BeiboGrainV1MessageConsumer defaultMessageConsumer; |
| | | @Autowired |
| | | private BeiboGrainV1SessionListener defaultSessionListener; |
| | | // å¿è·³æä¾ |
| | | private static HeartbeatProvider heartbeatProvider = new BeiboGrainV1HeartbeatImpl(); |
| | | |
| | | private IoSessionQuery sessionQuery; |
| | | |
| | | public void start(Integer port) { |
| | | IoServerOption ioServerOption = new IoServerOption(); |
| | | |
| | | if (null != port) { |
| | | ioServerOption.setPort(port); |
| | | } else { |
| | | ioServerOption.setPort(PORT); |
| | | } |
| | | ioServerOption.setSplitDecoderType(SplitByteDecoderType.NO_LIMIT); |
| | | // //确认ç»å°¾æ å¿ |
| | | // ioServerOption.setDelimiter(); |
| | | |
| | | // é
置系ç»å¿è·³é´é |
| | | ioServerOption.setReaderIdleTime(5 * 60); |
| | | |
| | | NettyServer ioServer = new NettyServer(ioServerOption, defaultMessageConsumer, defaultSessionListener, heartbeatProvider); |
| | | ioServer.startup(); |
| | | |
| | | sessionQuery = ioServer.getSessionQuery(); |
| | | |
| | | |
| | | log.info("* "); |
| | | log.info("* ========================"); |
| | | log.info("* "); |
| | | log.info("* [GRAIN-SERVERï¼BEIBO_GRAIN,PORT={}]", PORT); |
| | | log.info("* "); |
| | | log.info("* ========================"); |
| | | log.info("* "); |
| | | |
| | | System.out.println("* ========================"); |
| | | System.out.println("* "); |
| | | System.out.println("* [GRAIN-SERVERï¼BEIBO_GRAIN,PORT={}]" + port); |
| | | System.out.println("* "); |
| | | System.out.println("* ========================"); |
| | | } |
| | | |
| | | public IoSessionQuery getSessionQuery() { |
| | | return sessionQuery; |
| | | } |
| | | |
| | | /** |
| | | * åéä¿¡æ¯ |
| | | * |
| | | * @param ip |
| | | * @param port |
| | | * @param msg |
| | | * @return |
| | | */ |
| | | public InvokeResult push(String ip, int port, byte[] msg) { |
| | | IoSessionQuery sessionFactory = getSessionQuery(); |
| | | List<IoSession> sessions = sessionFactory.getAllSession(); |
| | | IoSession session = null; |
| | | for (IoSession ioSession : sessions) { |
| | | if (BeiboGrainV1ServerUtils.getServerKey(ip, port).equals(ioSession.getBusinessKey())) { |
| | | session = ioSession; |
| | | break; |
| | | } |
| | | } |
| | | if (null == session) { |
| | | return InvokeResult.CHANNEL_CLOSED; |
| | | } |
| | | return session.invoke(msg); |
| | | } |
| | | |
| | | /** |
| | | * ç´æ¥ä½¿ç¨å
åçSessionæ§è¡ |
| | | */ |
| | | public InvokeResult pushByMin(String hexStr) { |
| | | |
| | | IoSession session = BeiboGrainV1ServerUtils.getSession(); |
| | | |
| | | if (null == session) { |
| | | return InvokeResult.CHANNEL_CLOSED; |
| | | } |
| | | byte[] msg = BytesUtil.hexStrToBytes(hexStr); |
| | | return session.invoke(msg); |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.protocol.beibo.grainv1.server; |
| | | |
| | | |
| | | import com.ld.igds.util.BytesUtil; |
| | | import com.ld.io.api.IoSession; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * å·¥å
·ç±» |
| | | * |
| | | * @author vince |
| | | */ |
| | | public class BeiboGrainV1ServerUtils { |
| | | |
| | | |
| | | /** |
| | | * è®°å½æ¯ä¸ªè¿æ¥çæå䏿¬¡ä¿¡æ¯æ¶é´ key = è¿æ¥çKYEï¼data =å½åæ¶é´æ³ |
| | | */ |
| | | public static Map<String, Long> contextMapHeart = new HashMap<>(); |
| | | |
| | | public static Map<String, IoSession> contextIoSession = new HashMap<>(); |
| | | |
| | | |
| | | public static int HEART_BEAT_TIME = 30;//å¿è·³é´éæ¶é´ |
| | | |
| | | /** |
| | | * é对æ 线粮æ
主æºçé»è®¤IDé
ç½® |
| | | */ |
| | | public static String DEFAULT_MAC_ID = "6550"; |
| | | |
| | | /** |
| | | * çæTCPè¿æ¥çKEY |
| | | * |
| | | * @param ip |
| | | * @param port |
| | | * @return |
| | | */ |
| | | public static String getServerKey(String ip, Integer port) { |
| | | return ip + ":" + port; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * æ·»å ææ°å¿è·³æ¶é´æ³ |
| | | * |
| | | * @param session |
| | | */ |
| | | public static void addHeartBeat(IoSession session) { |
| | | contextMapHeart.put(getServerKey(session.getAddress(), session.getPort()), System.currentTimeMillis()); |
| | | } |
| | | |
| | | public static Long getHearBeat(IoSession session) { |
| | | return contextMapHeart.get(getServerKey(session.getAddress(), session.getPort())); |
| | | } |
| | | |
| | | public static void addSession(IoSession session) { |
| | | contextIoSession.put(DEFAULT_MAC_ID, session); |
| | | } |
| | | |
| | | public static IoSession getSession() { |
| | | return contextIoSession.get(DEFAULT_MAC_ID); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.protocol.beibo.grainv1.server; |
| | | |
| | | import com.ld.igds.common.CoreSerService; |
| | | import com.ld.igds.constant.Constant; |
| | | import com.ld.igds.models.DeviceSer; |
| | | import com.ld.igds.util.ContextUtil; |
| | | import com.ld.io.api.IoSession; |
| | | import com.ld.io.api.IoSessionListener; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | @Slf4j |
| | | @Service |
| | | public class BeiboGrainV1SessionListener implements IoSessionListener { |
| | | |
| | | @Autowired |
| | | private CoreSerService coreSerService; |
| | | /** |
| | | * 设å¤å建å¨çº¿ï¼éè¦æ³¨æå½å使ç¨ä¸»æºæ¨¡å¼ï¼ä¸»æºä¸çº¿é»è®¤ææç¸åSNé
ç½®çåæºå
¨é¨ä¸çº¿ |
| | | * |
| | | * @param session |
| | | */ |
| | | @Override |
| | | public void onCreate(IoSession session) { |
| | | |
| | | //æ·»å å°å
å |
| | | BeiboGrainV1ServerUtils.addSession(session); |
| | | |
| | | log.info("++++æ°å»ºè¿æ¥++++-IP={}ï¼PORT={}", session.getAddress(), session.getPort()); |
| | | |
| | | // æ·»å èªå®ä¹ä¸å¡ID |
| | | session.setBusinessKey(BeiboGrainV1ServerUtils.getServerKey(session.getAddress(), session.getPort())); |
| | | |
| | | //项ç®éç¨æ çº¿ä¸»æºæ¨¡å¼ï¼ç´æ¥è·åé»è®¤è®¾å¤ |
| | | DeviceSer deviceSer = coreSerService.getCacheSerBySn(ContextUtil.getDefaultCompanyId(), BeiboGrainV1ServerUtils.DEFAULT_MAC_ID); |
| | | if (null == deviceSer) return; |
| | | coreSerService.onlineBySn(session.getAddress(), session.getPort(), deviceSer.getSn(), Constant.YN_Y); |
| | | //æ´æ°ç¼å |
| | | coreSerService.refreshCache(deviceSer.getCompanyId()); |
| | | } |
| | | |
| | | /** |
| | | * 注æï¼å½åéç¨ä¸»æºæ¨¡å¼ï¼ä¸»æºç¦»çº¿ææç¸åSNé
ç½®çåæºå
¨é¨ç¦»çº¿ |
| | | * |
| | | * @param session |
| | | */ |
| | | @Override |
| | | public void onDestroy(IoSession session) { |
| | | log.info("----è¿æ¥æå¼-----IP={}ï¼PORT={}", session.getAddress(), session.getPort()); |
| | | |
| | | //项ç®éç¨æ çº¿ä¸»æºæ¨¡å¼ï¼ç´æ¥è·åé»è®¤è®¾å¤ |
| | | DeviceSer deviceSer = coreSerService.getCacheSer(ContextUtil.getDefaultCompanyId(), BeiboGrainV1ServerUtils.DEFAULT_MAC_ID); |
| | | |
| | | if (null == deviceSer) return; |
| | | |
| | | } |
| | | } |
ÎļþÃû´Ó igds-protocol-beibo/src/main/java/com/ld/igds/protocol/beibo/grain/util/BeiboGrainServerUtils.java ÐÞ¸Ä |
| | |
| | | package com.ld.igds.protocol.beibo.grain.util; |
| | | package com.ld.igds.protocol.beibo.grainv1.util; |
| | | |
| | | /** |
| | | * å·¥å
·ç±» |
| | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.concurrent.ExecutorService; |
| | |
| | | # 9307 ---å¶æ°®æºæ§å¶ç½å
³åè®® |
| | | # 9308 ---æ°è±¡ç«å¯¹å¤TCPåè®® |
| | | # 9309 ---馿µ·æºè½çº¯ç²®æ
åè®® |
| | | # 9310 ---馿µ·æºè½æ§å¶æåè®® |
| | | # 9310 ---馿µ·æºè½æ§å¶æåè®® |
| | | # 9311 ---è´åç²®æ
客æ·ç«¯åè®® |