From b3b17b231e2f2840332ce6eb96f791865fdec6d5 Mon Sep 17 00:00:00 2001
From: zhubaomin <zhubaomin>
Date: 星期一, 14 四月 2025 16:38:16 +0800
Subject: [PATCH] 代码优化
---
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/OnLineHandle.java | 76 ++++++++++++++++++++++++++++++++++++++
1 files changed, 76 insertions(+), 0 deletions(-)
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/OnLineHandle.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/OnLineHandle.java
new file mode 100644
index 0000000..a95c192
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/OnLineHandle.java
@@ -0,0 +1,76 @@
+package com.dy.common.mw.protocol;
+
+import java.util.Collection;
+import java.util.HashMap;
+
+public class OnLineHandle {
+
+ /**
+ * 瑙f瀽涓婄嚎鏁版嵁锛屽緱鍒癛tuAddr
+ * @param bs 瀛楄妭鏁扮粍
+ * @return OnLine.OnLineResult
+ */
+ public OnLine.OnLineResult parse(byte[] bs)throws Exception{
+ OnLine.OnLineResult rs = null ;
+ HashMap<String, AnnotationOnLineVo> onLineMap = ProtocolCache.getOnLineMap() ;
+ Collection<AnnotationOnLineVo> set = onLineMap.values() ;
+ if(set.size() == 0){
+ throw new Exception("澶勭悊涓婄嚎鏃讹紝寰楀埌鐨勫崗璁泦鍚堜负绌恒��") ;
+ }
+ int prority = ProtocolConstant.firstPriority ;
+ while(true){
+ Object[] objs = this.getClassObjAndAnnotationVo(prority, set) ;
+ OnLine onLine = (OnLine)objs[0] ;
+ if(onLine == null && prority == ProtocolConstant.firstPriority){
+ throw new Exception("澶勭悊涓婄嚎鏃讹紝鏈緱鍒颁紭鍏堢骇涓�" + prority + "涓婄嚎澶勭悊绫伙紒") ;
+ }else if(onLine == null){
+ //璇存槑涓婄嚎澶勭悊闆嗗悎宸茬粡閬嶅巻瀹屼簡銆�
+ break ;
+ }
+ rs = onLine.parse(bs) ;
+ OnLinePool.freeInstance(((AnnotationOnLineVo)objs[1]).clazz, onLine);
+ if(rs != null){
+ if(rs.result == OnLine.OnLineAction_success){
+ //鎴愬姛, 鍋滄寰幆锛岃繑鍥炵粨鏋�
+ break ;
+ }else if(rs.result == OnLine.OnLineAction_success_noMe){
+ //涓嶆槸鏈崗璁暟鎹� , 寰幆缁х画
+ prority++ ;
+ }else if(rs.result == OnLine.OnLineAction_success_response){
+ //瑙f瀽涓婄嚎鏁版嵁锛岄渶瑕佸洖鍐欐暟鎹�
+ //鍋滄寰幆锛岃繑鍥炵粨鏋�
+ break ;
+ }else if(rs.result == OnLine.OnLineAction_fail){
+ //瑙f瀽涓婄嚎鏁版嵁閿欒锛屼竴鑸槸涓婅鏁版嵁涓虹┖
+ throw new Exception("澶勭悊涓婄嚎鏃讹紝瑙f瀽ID鍑洪敊(鍙兘绋嬪簭閿欒锛屼笂琛屾暟鎹负null)锛�") ;
+ }
+ }
+ }
+ if(rs == null){
+ throw new Exception("澶勭悊涓婄嚎鏃跺嚭閿欙紝鏈兘鎴愬姛鍒嗘瀽鍑篒MEI鍙凤紒") ;
+ }
+ return rs ;
+ }
+
+ /**
+ * 寰楀埌澶勭悊绫诲璞�
+ * @param priority 浼樺厛绾�
+ * @param set 闆嗗悎
+ * @return Object[]
+ * @throws Exception 寮傚父
+ */
+ private Object[] getClassObjAndAnnotationVo(int priority, Collection<AnnotationOnLineVo> set) throws Exception{
+ OnLine obj = null ;
+ AnnotationOnLineVo rVo = null ;
+ for(AnnotationOnLineVo vo : set){
+ if(priority == vo.priority){
+ obj = OnLinePool.getInstance(vo.clazz) ;
+ rVo = vo ;
+ break ;
+ }
+ }
+ return new Object[]{obj, rVo} ;
+ }
+
+
+}
--
Gitblit v1.8.0