From 7df8ed14d605bcc731341ff12349bc117714b69e Mon Sep 17 00:00:00 2001
From: zhubaomin <zhubaomin>
Date: 星期四, 17 四月 2025 16:18:24 +0800
Subject: [PATCH] 优化代码
---
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu3rd/src/main/java/com/dy/rtuMw3rd/tcp4Bjnl/NetDataDecoder.java | 92 ++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 92 insertions(+), 0 deletions(-)
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu3rd/src/main/java/com/dy/rtuMw3rd/tcp4Bjnl/NetDataDecoder.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu3rd/src/main/java/com/dy/rtuMw3rd/tcp4Bjnl/NetDataDecoder.java
new file mode 100644
index 0000000..5f947f6
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu3rd/src/main/java/com/dy/rtuMw3rd/tcp4Bjnl/NetDataDecoder.java
@@ -0,0 +1,92 @@
+package com.dy.rtuMw3rd.tcp4Bjnl;
+
+import com.alibaba.fastjson2.JSON;
+import com.dy.common.springUtil.SpringContextUtil;
+import com.dy.rtuMw3rd.tcp4Bjnl.deal.BjnlDealer;
+import com.dy.rtuMw3rd.tcp4Bjnl.protocol.BjnlProtocol;
+import com.dy.rtuMw3rd.tcp4Bjnl.protocol.Result;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.mina.core.buffer.IoBuffer;
+import org.apache.mina.core.session.IoSession;
+import org.apache.mina.filter.codec.CumulativeProtocolDecoder;
+import org.apache.mina.filter.codec.ProtocolDecoderOutput;
+
+import java.io.IOException;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/03/18 14:20
+ * @Description
+ */
+@Slf4j
+public class NetDataDecoder extends CumulativeProtocolDecoder {
+
+ /**
+ * 瀵圭綉缁滀紶杈撴潵鐨勬暟鎹繘琛岃В鐮�
+ */
+ protected boolean doDecode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) throws IOException, Exception{
+ int remain = in.remaining() ;
+ if(remain > 0){
+ byte[] bs = new byte[remain];
+ in.get(bs) ;
+ in.position(0) ;
+ String s = new String(bs, "UTF-8") ;
+ if(s != null && s.length() > 0){
+ s = s.trim() ;
+ }
+ this.receive(s);
+ }
+ return true;
+ }
+
+
+ private void receive(String json){
+ log.info("鍖椾含鍐滄灄--鏀跺埌鏁版嵁锛�" + json);
+ try{
+ if(JSON.isValid(json)){
+ Result res = JSON.parseObject(json, Result.class) ;
+ if(res.status != null && res.status.code != null && res.status.code.equals(BjnlProtocol.SuccessCode)){
+ if(res.status.type != null){
+ if(res.status.type.equals(BjnlProtocol.ResultTypeAuth)){
+ forLogin(res) ;
+ }else if(res.status.type.equals(BjnlProtocol.ResultTypeData)){
+ forData(res) ;
+ }else if(res.status.type.equals(BjnlProtocol.ResultTypeControl)){
+ forControl(res) ;
+ }else{
+ log.error("鍖椾含鍐滄灄--鏈嶅姟绔繑鍥炴暟鎹叾绫诲瀷涓嶅彲璇嗗埆锛�" + res.status.type);
+ }
+ }
+ }else{
+ //鍙兘鎺ㄩ�佺殑鏁版嵁涓笉鍖呭惈status瀛愭暟鎹�
+ if(res.data != null && res.data.length() > 0){
+ forData(res) ;
+ }else{
+ log.error("鍖椾含鍐滄灄--鏈嶅姟绔繑鍥炲け璐ヤ俊鎭細" + json);
+ }
+
+ }
+ }else{
+ log.error("鍖椾含鍐滄灄--鏈嶅姟绔繑鍥炴暟鎹潪鏈夋晥JSON鏁版嵁锛孿n鏁版嵁涓�" + json);
+ }
+ }catch (Exception e){
+ log.error("鍖椾含鍐滄灄--鏈嶅姟绔繑鍥炴暟鎹浆JSON寮傚父锛孿n鏁版嵁涓�" + json ,e);
+ }
+ }
+
+ private void forLogin(Result res){
+ Worker.getInstance().setLogined();
+ BjnlDealer d = SpringContextUtil.getBean(BjnlDealer.class) ;
+ d.logined(res);
+ }
+
+ private void forData(Result res){
+ BjnlDealer d = SpringContextUtil.getBean(BjnlDealer.class) ;
+ d.receiveData(res);
+ }
+
+ private void forControl(Result res){
+ BjnlDealer d = SpringContextUtil.getBean(BjnlDealer.class) ;
+ d.controlRes(res);
+ }
+}
--
Gitblit v1.8.0