From fc9a9e1e824f69bbd6291b510240cd4d699593a1 Mon Sep 17 00:00:00 2001 From: godotg Date: Tue, 6 Feb 2024 15:21:52 +0800 Subject: [PATCH] fix[protocol]: the protocol number is defined repeatedly --- .../zfoo/protocol/registration/ProtocolAnalysis.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/protocol/src/main/java/com/zfoo/protocol/registration/ProtocolAnalysis.java b/protocol/src/main/java/com/zfoo/protocol/registration/ProtocolAnalysis.java index a8c84717..f401768c 100644 --- a/protocol/src/main/java/com/zfoo/protocol/registration/ProtocolAnalysis.java +++ b/protocol/src/main/java/com/zfoo/protocol/registration/ProtocolAnalysis.java @@ -682,12 +682,16 @@ public class ProtocolAnalysis { // 协议智能语法分析,错误的协议定义将无法启动程序并给出错误警告 //----------------------------------------------------------------------- private static void initProtocolClass(short protocolId, Class clazz) { + // 协议号重复定义 + if (protocolIdMap.containsKey(clazz)) { + throw new RunException("duplicate protocol:[{}] protocolId:[{}] and [protocolId:{}]", clazz.getSimpleName(), protocolIdMap.get(clazz), protocolId); + } protocolIdMap.put(clazz, protocolId); protocolIdPrimitiveMap.putPrimitive(clazz.hashCode(), protocolId); - var previous = protocolClassMap.put(protocolId, clazz); + var previousProtocolClass = protocolClassMap.put(protocolId, clazz); // 协议号重复 - if (previous != null) { - throw new RunException("[{}][{}] protocol number [protocolId:{}] is repeated", clazz.getCanonicalName(), previous.getCanonicalName(), protocolId); + if (previousProtocolClass != null) { + throw new RunException("[{}][{}] protocol number [protocolId:{}] is repeated", clazz.getCanonicalName(), previousProtocolClass.getCanonicalName(), protocolId); } }