fix[protocol]: the protocol number is defined repeatedly

This commit is contained in:
godotg
2024-02-06 15:21:52 +08:00
parent a69b62b824
commit fc9a9e1e82
@@ -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);
}
}