From 58fbb96a3a74f75fe64239623626b293c60a49d6 Mon Sep 17 00:00:00 2001 From: godotg Date: Mon, 29 Jan 2024 17:19:07 +0800 Subject: [PATCH] perf[lua]: convert the table of lua to a string output --- .../serializer/lua/GenerateLuaUtils.java | 37 +++++++++++++------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/protocol/src/main/java/com/zfoo/protocol/serializer/lua/GenerateLuaUtils.java b/protocol/src/main/java/com/zfoo/protocol/serializer/lua/GenerateLuaUtils.java index 4f0b52e6..14362e44 100644 --- a/protocol/src/main/java/com/zfoo/protocol/serializer/lua/GenerateLuaUtils.java +++ b/protocol/src/main/java/com/zfoo/protocol/serializer/lua/GenerateLuaUtils.java @@ -21,6 +21,9 @@ import com.zfoo.protocol.generate.GenerateProtocolNote; import com.zfoo.protocol.generate.GenerateProtocolPath; import com.zfoo.protocol.registration.IProtocolRegistration; import com.zfoo.protocol.registration.ProtocolRegistration; +import com.zfoo.protocol.registration.field.ArrayField; +import com.zfoo.protocol.registration.field.ListField; +import com.zfoo.protocol.registration.field.MapField; import com.zfoo.protocol.serializer.CodeLanguage; import com.zfoo.protocol.serializer.csharp.GenerateCsUtils; import com.zfoo.protocol.serializer.reflect.*; @@ -266,19 +269,25 @@ public abstract class GenerateLuaUtils { private static String toStringJsonTemplate(ProtocolRegistration registration) { var fields = registration.getFields(); var fieldRegistrations = registration.getFieldRegistrations(); - var gdBuilder = new StringBuilder(); - gdBuilder.append("{"); + var luaBuilder = new StringBuilder(); + luaBuilder.append("{"); // when generate source code fields, use origin fields sort var sequencedFields = ReflectionUtils.notStaticAndTransientFields(registration.getConstructor().getDeclaringClass()); var params = new ArrayList(); for (var field : sequencedFields) { - var fieldRegistration = fieldRegistrations[GenerateProtocolFile.indexOf(fields, field)]; var fieldName = field.getName(); - params.add(StringUtils.format("{}:%s", fieldName)); + var fieldRegistration = fieldRegistrations[GenerateProtocolFile.indexOf(fields, field)]; + if ((fieldRegistration instanceof ArrayField) || (fieldRegistration instanceof ListField)) { + params.add(StringUtils.format("{}:[%s]", fieldName)); + } else if (fieldRegistration instanceof MapField) { + params.add(StringUtils.format("{}:{%s}", fieldName)); + } else { + params.add(StringUtils.format("{}:%s", fieldName)); + } } - gdBuilder.append(StringUtils.joinWith(", ", params.toArray())); - gdBuilder.append("}"); - return gdBuilder.toString(); + luaBuilder.append(StringUtils.joinWith(", ", params.toArray())); + luaBuilder.append("}"); + return luaBuilder.toString(); } private static String toStringParams(ProtocolRegistration registration) { @@ -287,17 +296,21 @@ public abstract class GenerateLuaUtils { return StringUtils.EMPTY_JSON; } var fieldRegistrations = registration.getFieldRegistrations(); - var gdBuilder = new StringBuilder(); + var luaBuilder = new StringBuilder(); // when generate source code fields, use origin fields sort var sequencedFields = ReflectionUtils.notStaticAndTransientFields(registration.getConstructor().getDeclaringClass()); var params = new ArrayList(); for (var field : sequencedFields) { - var fieldRegistration = fieldRegistrations[GenerateProtocolFile.indexOf(fields, field)]; var fieldName = field.getName(); - params.add(StringUtils.format("self.{}", field.getName())); + var fieldRegistration = fieldRegistrations[GenerateProtocolFile.indexOf(fields, field)]; + if ((fieldRegistration instanceof ArrayField) || (fieldRegistration instanceof ListField) || (fieldRegistration instanceof MapField)) { + params.add(StringUtils.format("table.concat(self.{}, \", \")", fieldName)); + } else { + params.add(StringUtils.format("self.{}", fieldName)); + } } - gdBuilder.append(StringUtils.joinWith(", ", params.toArray())); - return gdBuilder.toString(); + luaBuilder.append(StringUtils.joinWith(", ", params.toArray())); + return luaBuilder.toString(); } private static String writePacket(ProtocolRegistration registration) {