mirror of
https://github.com/tiennm99/zfoo.git
synced 2026-10-13 10:16:07 +00:00
perf[protocol]: ByteBufUtils增加针对对象数组的序列化方法
This commit is contained in:
1 parent
40f04879cc
commit
be3596beec
2 files changed
+21
No files matched your search
@@ -1176,4 +1176,15 @@ public abstract class ByteBufUtils {
|
||||
return chars;
|
||||
}
|
||||
|
||||
public static <T extends IPacket> void writePacketArray(ByteBuf byteBuf, T[] array, IProtocolRegistration protocolRegistration) {
|
||||
if (array == null) {
|
||||
byteBuf.writeByte(0);
|
||||
return;
|
||||
}
|
||||
writeInt(byteBuf, array.length);
|
||||
for (var value : array) {
|
||||
protocolRegistration.write(byteBuf, value);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -16,6 +16,7 @@ import com.zfoo.protocol.generate.GenerateProtocolFile;
|
||||
import com.zfoo.protocol.registration.EnhanceUtils;
|
||||
import com.zfoo.protocol.registration.field.ArrayField;
|
||||
import com.zfoo.protocol.registration.field.IFieldRegistration;
|
||||
import com.zfoo.protocol.registration.field.ObjectProtocolField;
|
||||
import com.zfoo.protocol.util.StringUtils;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
@@ -160,6 +161,14 @@ public class CutDownArraySerializer implements ICutDownSerializer {
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (arrayField.getArrayElementRegistration() instanceof ObjectProtocolField) {
|
||||
var objectProtocolField = (ObjectProtocolField) arrayField.getArrayElementRegistration();
|
||||
switch (language) {
|
||||
case Enhance:
|
||||
builder.append(StringUtils.format("{}.writePacketArray($1, {}, {});", EnhanceUtils.byteBufUtils, objectStr, EnhanceUtils.getProtocolRegistrationFieldNameByProtocolId(objectProtocolField.getProtocolId())));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
@@ -293,6 +302,7 @@ public class CutDownArraySerializer implements ICutDownSerializer {
|
||||
}
|
||||
break;
|
||||
default:
|
||||
// Java不支持泛型的数组初始化,这边就不做任何操作
|
||||
}
|
||||
|
||||
GenerateProtocolFile.index.getAndDecrement();
|
||||
|
||||
Reference in new issue
Block a user