From c5ee1b8f54ded045798dfe1ff2195424dc246fc9 Mon Sep 17 00:00:00 2001 From: xiaorenping <85027396@qq.com> Date: Sat, 28 Dec 2024 17:44:25 +0800 Subject: [PATCH] =?UTF-8?q?feat[protocol]:=20=E4=B8=8A=E5=B1=82=E9=9C=80?= =?UTF-8?q?=E8=A6=81=E7=9F=A5=E9=81=93=E6=98=AF=E9=82=A3=E4=B8=AA=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E8=A7=A3=E6=9E=90=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/zfoo/protocol/ProtocolManager.java | 9 ++++++- .../protocol/exception/DecodeException.java | 25 +++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 protocol/src/main/java/com/zfoo/protocol/exception/DecodeException.java diff --git a/protocol/src/main/java/com/zfoo/protocol/ProtocolManager.java b/protocol/src/main/java/com/zfoo/protocol/ProtocolManager.java index f7123fe0..3613bf88 100644 --- a/protocol/src/main/java/com/zfoo/protocol/ProtocolManager.java +++ b/protocol/src/main/java/com/zfoo/protocol/ProtocolManager.java @@ -14,6 +14,7 @@ package com.zfoo.protocol; import com.zfoo.protocol.buffer.ByteBufUtils; import com.zfoo.protocol.collection.HashMapIntShort; +import com.zfoo.protocol.exception.DecodeException; import com.zfoo.protocol.generate.GenerateOperation; import com.zfoo.protocol.registration.IProtocolRegistration; import com.zfoo.protocol.registration.ProtocolAnalysis; @@ -70,7 +71,13 @@ public class ProtocolManager { * ByteBuf convert to byte[] using ByteBufUtils.readAllBytes(ByteBuf) in zfoo */ public static Object read(ByteBuf buffer) { - return protocols[ByteBufUtils.readShort(buffer)].read(buffer); + short protocolId = -1; + try { + protocolId = ByteBufUtils.readShort(buffer); + return protocols[protocolId].read(buffer); + } catch (Throwable e) { + throw new DecodeException(e, protocolId); + } } public static IProtocolRegistration getProtocol(short protocolId) { diff --git a/protocol/src/main/java/com/zfoo/protocol/exception/DecodeException.java b/protocol/src/main/java/com/zfoo/protocol/exception/DecodeException.java new file mode 100644 index 00000000..76ae547c --- /dev/null +++ b/protocol/src/main/java/com/zfoo/protocol/exception/DecodeException.java @@ -0,0 +1,25 @@ +package com.zfoo.protocol.exception; + +import com.zfoo.protocol.util.StringUtils; + +public class DecodeException extends RuntimeException { + /** + * msg id + */ + private final short protocolId; + + public DecodeException(Throwable e, short protocolId) { + super(e); + this.protocolId = protocolId; + } + + public short getProtocolId() { + return protocolId; + } + + @Override + public String toString() { + String sss = super.toString(); + return StringUtils.format("{}, protocolId={} ", sss, protocolId); + } +}