mirror of
https://github.com/tiennm99/zfoo.git
synced 2026-05-19 17:29:39 +00:00
perf[protocol]: protocol generate to string method
This commit is contained in:
@@ -14,6 +14,7 @@
|
||||
package com.zfoo.protocol.serializer.lua;
|
||||
|
||||
import com.zfoo.protocol.anno.Compatible;
|
||||
import com.zfoo.protocol.collection.ArrayUtils;
|
||||
import com.zfoo.protocol.generate.GenerateOperation;
|
||||
import com.zfoo.protocol.generate.GenerateProtocolFile;
|
||||
import com.zfoo.protocol.generate.GenerateProtocolNote;
|
||||
@@ -26,14 +27,12 @@ import com.zfoo.protocol.serializer.csharp.GenerateCsUtils;
|
||||
import com.zfoo.protocol.serializer.reflect.*;
|
||||
import com.zfoo.protocol.util.ClassUtils;
|
||||
import com.zfoo.protocol.util.FileUtils;
|
||||
import com.zfoo.protocol.util.ReflectionUtils;
|
||||
import com.zfoo.protocol.util.StringUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
|
||||
import static com.zfoo.protocol.util.FileUtils.LS;
|
||||
import static com.zfoo.protocol.util.StringUtils.TAB;
|
||||
@@ -124,11 +123,14 @@ public abstract class GenerateLuaUtils {
|
||||
|
||||
var classNote = GenerateProtocolNote.classNote(protocolId, CodeLanguage.Lua);
|
||||
var valueOfMethod = valueOfMethod(registration);
|
||||
var toStringJsonTemplate = toStringJsonTemplate(registration);
|
||||
var toStringParams = toStringParams(registration);
|
||||
var writePacket = writePacket(registration);
|
||||
var readPacket = readPacket(registration);
|
||||
|
||||
protocolTemplate = StringUtils.format(protocolTemplate, classNote, protocolClazzName, StringUtils.EMPTY_JSON, protocolClazzName
|
||||
, valueOfMethod.trim(), protocolClazzName, protocolId
|
||||
, valueOfMethod.trim(), protocolClazzName, protocolId, protocolClazzName, protocolClazzName
|
||||
, protocolClazzName, toStringJsonTemplate, toStringParams
|
||||
, protocolClazzName, writePacket.trim(), protocolClazzName, protocolClazzName, readPacket.trim(), protocolClazzName);
|
||||
|
||||
var outputPath = StringUtils.format("{}/{}/{}.lua"
|
||||
@@ -164,6 +166,43 @@ public abstract class GenerateLuaUtils {
|
||||
return luaBuilder.toString();
|
||||
}
|
||||
|
||||
private static String toStringJsonTemplate(ProtocolRegistration registration) {
|
||||
var fields = registration.getFields();
|
||||
var fieldRegistrations = registration.getFieldRegistrations();
|
||||
var gdBuilder = new StringBuilder();
|
||||
gdBuilder.append("{");
|
||||
// when generate source code fields, use origin fields sort
|
||||
var sequencedFields = ReflectionUtils.notStaticAndTransientFields(registration.getConstructor().getDeclaringClass());
|
||||
var params = new ArrayList<String>();
|
||||
for (var field : sequencedFields) {
|
||||
var fieldRegistration = fieldRegistrations[GenerateProtocolFile.indexOf(fields, field)];
|
||||
var fieldName = field.getName();
|
||||
params.add(StringUtils.format("{}:%s", fieldName));
|
||||
}
|
||||
gdBuilder.append(StringUtils.joinWith(", ", params.toArray()));
|
||||
gdBuilder.append("}");
|
||||
return gdBuilder.toString();
|
||||
}
|
||||
|
||||
private static String toStringParams(ProtocolRegistration registration) {
|
||||
var fields = registration.getFields();
|
||||
if (ArrayUtils.isEmpty(fields)) {
|
||||
return StringUtils.EMPTY_JSON;
|
||||
}
|
||||
var fieldRegistrations = registration.getFieldRegistrations();
|
||||
var gdBuilder = new StringBuilder();
|
||||
// when generate source code fields, use origin fields sort
|
||||
var sequencedFields = ReflectionUtils.notStaticAndTransientFields(registration.getConstructor().getDeclaringClass());
|
||||
var params = new ArrayList<String>();
|
||||
for (var field : sequencedFields) {
|
||||
var fieldRegistration = fieldRegistrations[GenerateProtocolFile.indexOf(fields, field)];
|
||||
var fieldName = field.getName();
|
||||
params.add(StringUtils.format("self.{}", field.getName()));
|
||||
}
|
||||
gdBuilder.append(StringUtils.joinWith(", ", params.toArray()));
|
||||
return gdBuilder.toString();
|
||||
}
|
||||
|
||||
private static String writePacket(ProtocolRegistration registration) {
|
||||
var fields = registration.getFields();
|
||||
var fieldRegistrations = registration.getFieldRegistrations();
|
||||
|
||||
@@ -14,6 +14,16 @@ function {}:protocolId()
|
||||
return {}
|
||||
end
|
||||
|
||||
function {}:protocolName()
|
||||
return {}
|
||||
end
|
||||
|
||||
function {}:__tostring()
|
||||
local jsonTemplate = "{}"
|
||||
local result = string.format(jsonTemplate, {})
|
||||
return result
|
||||
end
|
||||
|
||||
function {}:write(buffer, packet)
|
||||
if packet == nil then
|
||||
buffer:writeInt(0)
|
||||
|
||||
Reference in New Issue
Block a user