mirror of
https://github.com/tiennm99/zfoo.git
synced 2026-08-18 06:27:01 +00:00
ref[javascript]: refactor generate Javascript protocol
This commit is contained in:
@@ -22,7 +22,6 @@ import com.zfoo.protocol.serializer.CodeLanguage;
|
||||
import com.zfoo.protocol.serializer.es.GenerateEsUtils;
|
||||
import com.zfoo.protocol.serializer.gdscript.GenerateGdUtils;
|
||||
import com.zfoo.protocol.serializer.go.GenerateGoUtils;
|
||||
import com.zfoo.protocol.serializer.javascript.GenerateJsUtils;
|
||||
import com.zfoo.protocol.serializer.python.GeneratePyUtils;
|
||||
import com.zfoo.protocol.serializer.typescript.GenerateTsUtils;
|
||||
import com.zfoo.protocol.util.FileUtils;
|
||||
@@ -32,7 +31,6 @@ import com.zfoo.protocol.util.StringUtils;
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
import static com.zfoo.protocol.util.StringUtils.TAB;
|
||||
@@ -49,7 +47,7 @@ public abstract class GenerateProtocolFile {
|
||||
*/
|
||||
public static Predicate<IProtocolRegistration> generateProtocolFilter = registration -> true;
|
||||
|
||||
public static AtomicInteger index = new AtomicInteger();
|
||||
public static int localVariableId = 0;
|
||||
|
||||
public static StringBuilder addTab(StringBuilder builder, int deep) {
|
||||
builder.append(TAB.repeat(Math.max(0, deep)));
|
||||
@@ -131,16 +129,6 @@ public abstract class GenerateProtocolFile {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 生成Javascript协议
|
||||
if (generateLanguages.contains(CodeLanguage.JavaScript)) {
|
||||
GenerateJsUtils.init(generateOperation);
|
||||
for (var protocolRegistration : generateProtocols) {
|
||||
GenerateJsUtils.createJsProtocolFile((ProtocolRegistration) protocolRegistration);
|
||||
}
|
||||
GenerateJsUtils.createProtocolManager(generateProtocols);
|
||||
}
|
||||
|
||||
// 生成Javascript协议
|
||||
if (generateLanguages.contains(CodeLanguage.ES)) {
|
||||
GenerateEsUtils.init(generateOperation);
|
||||
|
||||
@@ -107,7 +107,7 @@ public abstract class EnhanceUtils {
|
||||
* @return 返回类的名称格式:EnhanceUtilsProtocolRegistration1
|
||||
*/
|
||||
public static IProtocolRegistration createProtocolRegistration(ProtocolRegistration registration) throws NotFoundException, CannotCompileException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
|
||||
GenerateProtocolFile.index.set(0);
|
||||
GenerateProtocolFile.localVariableId = 0;
|
||||
|
||||
var classPool = ClassPool.getDefault();
|
||||
var protocolId = registration.getId();
|
||||
|
||||
@@ -25,10 +25,8 @@ import com.zfoo.protocol.generate.GenerateProtocolFile;
|
||||
import com.zfoo.protocol.generate.GenerateProtocolNote;
|
||||
import com.zfoo.protocol.generate.GenerateProtocolPath;
|
||||
import com.zfoo.protocol.registration.field.*;
|
||||
import com.zfoo.protocol.serializer.cpp.CodeGenerateCpp;
|
||||
import com.zfoo.protocol.serializer.gdscript.GenerateGdUtils;
|
||||
import com.zfoo.protocol.serializer.go.GenerateGoUtils;
|
||||
import com.zfoo.protocol.serializer.javascript.GenerateJsUtils;
|
||||
import com.zfoo.protocol.serializer.python.GeneratePyUtils;
|
||||
import com.zfoo.protocol.serializer.reflect.*;
|
||||
import com.zfoo.protocol.serializer.typescript.GenerateTsUtils;
|
||||
@@ -399,7 +397,6 @@ public class ProtocolAnalysis {
|
||||
GenerateProtocolNote.clear();
|
||||
GenerateProtocolPath.clear();
|
||||
GenerateGoUtils.clear();
|
||||
GenerateJsUtils.clear();
|
||||
GenerateTsUtils.clear();
|
||||
GenerateGdUtils.clear();
|
||||
GeneratePyUtils.clear();
|
||||
|
||||
@@ -14,6 +14,7 @@ package com.zfoo.protocol.serializer;
|
||||
|
||||
import com.zfoo.protocol.serializer.cpp.CodeGenerateCpp;
|
||||
import com.zfoo.protocol.serializer.csharp.CodeGenerateCsharp;
|
||||
import com.zfoo.protocol.serializer.javascript.CodeGenerateJavascript;
|
||||
import com.zfoo.protocol.serializer.lua.CodeGenerateLua;
|
||||
|
||||
/**
|
||||
@@ -30,7 +31,7 @@ public enum CodeLanguage {
|
||||
|
||||
Go(1 << 2, null),
|
||||
|
||||
JavaScript(1 << 3, null),
|
||||
JavaScript(1 << 3, CodeGenerateJavascript.class),
|
||||
|
||||
ES(1 << 4, null),
|
||||
|
||||
|
||||
@@ -508,7 +508,7 @@ public class CutDownArraySerializer implements ICutDownSerializer {
|
||||
var arrayField = (ArrayField) fieldRegistration;
|
||||
var arrayName = getArrayClassName(arrayField);
|
||||
|
||||
var array = "array" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var array = "array" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
var flag = true;
|
||||
switch (arrayName) {
|
||||
@@ -1031,7 +1031,7 @@ public class CutDownArraySerializer implements ICutDownSerializer {
|
||||
if (flag) {
|
||||
return array;
|
||||
} else {
|
||||
GenerateProtocolFile.index.getAndDecrement();
|
||||
GenerateProtocolFile.localVariableId--;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -311,7 +311,7 @@ public class CutDownListSerializer implements ICutDownSerializer {
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, Field field, IFieldRegistration fieldRegistration, CodeLanguage language) {
|
||||
var listField = (ListField) fieldRegistration;
|
||||
var list = "list" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var list = "list" + GenerateProtocolFile.localVariableId++;
|
||||
var flag = true;
|
||||
|
||||
var listName = getListClassName(listField);
|
||||
@@ -613,7 +613,7 @@ public class CutDownListSerializer implements ICutDownSerializer {
|
||||
if (flag) {
|
||||
return list;
|
||||
} else {
|
||||
GenerateProtocolFile.index.getAndDecrement();
|
||||
GenerateProtocolFile.localVariableId--;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -369,7 +369,7 @@ public class CutDownMapSerializer implements ICutDownSerializer {
|
||||
var keySerializer = keyRegistration.serializer();
|
||||
var valueSerializer = valueRegistration.serializer();
|
||||
|
||||
var map = "map" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var map = "map" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
if (keyRegistration instanceof BaseField) {
|
||||
if (keySerializer == IntSerializer.INSTANCE) {
|
||||
@@ -730,7 +730,7 @@ public class CutDownMapSerializer implements ICutDownSerializer {
|
||||
}
|
||||
}
|
||||
}
|
||||
GenerateProtocolFile.index.getAndDecrement();
|
||||
GenerateProtocolFile.localVariableId--;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -327,7 +327,7 @@ public class CutDownSetSerializer implements ICutDownSerializer {
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, Field field, IFieldRegistration fieldRegistration, CodeLanguage language) {
|
||||
var setField = (SetField) fieldRegistration;
|
||||
var set = "set" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var set = "set" + GenerateProtocolFile.localVariableId++;
|
||||
var flag = true;
|
||||
var setName = getSetClassName(setField);
|
||||
|
||||
@@ -629,7 +629,7 @@ public class CutDownSetSerializer implements ICutDownSerializer {
|
||||
if (flag) {
|
||||
return set;
|
||||
} else {
|
||||
GenerateProtocolFile.index.getAndDecrement();
|
||||
GenerateProtocolFile.localVariableId--;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -103,7 +103,6 @@ public class CodeGenerateCpp implements ICodeGenerate {
|
||||
var protocol_class = new StringBuilder();
|
||||
var protocol_registration = new StringBuilder();
|
||||
for (var registration : GenerateProtocolFile.subProtocolFirst(registrations)) {
|
||||
GenerateProtocolFile.index.set(0);
|
||||
var protocol_id = registration.protocolId();
|
||||
|
||||
// protocol
|
||||
@@ -116,7 +115,7 @@ public class CodeGenerateCpp implements ICodeGenerate {
|
||||
var protocolTemplate = ClassUtils.getFileFromClassPathToString("cpp/ProtocolsTemplate.h");
|
||||
var formatProtocolTemplate = CodeTemplatePlaceholder.formatTemplate(protocolTemplate, Map.of(
|
||||
CodeTemplatePlaceholder.protocol_root_path, protocolOutputRootPath
|
||||
,CodeTemplatePlaceholder.protocol_class, protocol_class.toString()
|
||||
, CodeTemplatePlaceholder.protocol_class, protocol_class.toString()
|
||||
, CodeTemplatePlaceholder.protocol_registration, protocol_registration.toString()
|
||||
));
|
||||
var outputPath = StringUtils.format("{}/Protocols.h", protocolOutputPath);
|
||||
@@ -153,7 +152,7 @@ public class CodeGenerateCpp implements ICodeGenerate {
|
||||
var protocolTemplate = ClassUtils.getFileFromClassPathToString("cpp/ProtocolTemplate.h");
|
||||
var formatProtocolTemplate = CodeTemplatePlaceholder.formatTemplate(protocolTemplate, Map.of(
|
||||
CodeTemplatePlaceholder.protocol_root_path, protocolOutputRootPath
|
||||
,CodeTemplatePlaceholder.protocol_name, protocol_name
|
||||
, CodeTemplatePlaceholder.protocol_name, protocol_name
|
||||
, CodeTemplatePlaceholder.protocol_imports, protocol_imports_fold(registration)
|
||||
, CodeTemplatePlaceholder.protocol_class, protocol_class(registration)
|
||||
, CodeTemplatePlaceholder.protocol_registration, protocol_registration(registration)
|
||||
@@ -192,7 +191,7 @@ public class CodeGenerateCpp implements ICodeGenerate {
|
||||
var protocolTemplate = ClassUtils.getFileFromClassPathToString("cpp/ProtocolTemplate.h");
|
||||
var formatProtocolTemplate = CodeTemplatePlaceholder.formatTemplate(protocolTemplate, Map.of(
|
||||
CodeTemplatePlaceholder.protocol_root_path, protocolOutputRootPath
|
||||
,CodeTemplatePlaceholder.protocol_name, protocol_name
|
||||
, CodeTemplatePlaceholder.protocol_name, protocol_name
|
||||
, CodeTemplatePlaceholder.protocol_imports, protocol_imports_default(registration)
|
||||
, CodeTemplatePlaceholder.protocol_class, protocol_class(registration)
|
||||
, CodeTemplatePlaceholder.protocol_registration, protocol_registration(registration)
|
||||
@@ -236,8 +235,7 @@ public class CodeGenerateCpp implements ICodeGenerate {
|
||||
|
||||
var protocolRegistrationTemplate = ClassUtils.getFileFromClassPathToString("cpp/ProtocolRegistrationTemplate.h");
|
||||
var placeholderMap = Map.of(
|
||||
CodeTemplatePlaceholder.protocol_note, GenerateProtocolNote.protocol_note(protocol_id, CodeLanguage.Cpp)
|
||||
, CodeTemplatePlaceholder.protocol_name, protocol_class_name
|
||||
CodeTemplatePlaceholder.protocol_name, protocol_class_name
|
||||
, CodeTemplatePlaceholder.protocol_id, String.valueOf(protocol_id)
|
||||
, CodeTemplatePlaceholder.protocol_write_serialization, protocol_write_serialization(registration)
|
||||
, CodeTemplatePlaceholder.protocol_read_deserialization, protocol_read_deserialization(registration)
|
||||
@@ -298,6 +296,7 @@ public class CodeGenerateCpp implements ICodeGenerate {
|
||||
}
|
||||
|
||||
private String protocol_write_serialization(ProtocolRegistration registration) {
|
||||
GenerateProtocolFile.localVariableId = 0;
|
||||
var fields = registration.getFields();
|
||||
var fieldRegistrations = registration.getFieldRegistrations();
|
||||
var cppBuilder = new StringBuilder();
|
||||
@@ -325,6 +324,7 @@ public class CodeGenerateCpp implements ICodeGenerate {
|
||||
|
||||
|
||||
private String protocol_read_deserialization(ProtocolRegistration registration) {
|
||||
GenerateProtocolFile.localVariableId = 0;
|
||||
var fields = registration.getFields();
|
||||
var fieldRegistrations = registration.getFieldRegistrations();
|
||||
|
||||
|
||||
@@ -46,16 +46,16 @@ public class CppArraySerializer implements ICppSerializer {
|
||||
|
||||
ArrayField arrayField = (ArrayField) fieldRegistration;
|
||||
|
||||
String length = "length" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String length = "length" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("int32_t {} = {}.size();", length, objectStr)).append(LS);
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("buffer.writeInt({});", length)).append(LS);
|
||||
|
||||
String i = "i" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String i = "i" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("for (auto {} = 0; {} < {}; {}++) {", i, i, length, i)).append(LS);
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
String element = "element" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String element = "element" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("{} {} = {}[{}];", CodeGenerateCpp.toCppClassName(arrayField.getType().getSimpleName()), element, objectStr, i)).append(LS);
|
||||
|
||||
CodeGenerateCpp.cppSerializer(arrayField.getArrayElementRegistration().serializer())
|
||||
@@ -75,12 +75,12 @@ public class CppArraySerializer implements ICppSerializer {
|
||||
|
||||
|
||||
var arrayField = (ArrayField) fieldRegistration;
|
||||
var result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
var typeName = CodeGenerateCpp.toCppClassName(arrayField.getType().getSimpleName());
|
||||
|
||||
var i = "index" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var size = "size" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var i = "index" + GenerateProtocolFile.localVariableId++;
|
||||
var size = "size" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("int32_t {} = buffer.readInt();", size)).append(LS);
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
|
||||
@@ -40,7 +40,7 @@ public class CppBooleanSerializer implements ICppSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("bool {} = buffer.readBool();", result)).append(LS);
|
||||
|
||||
@@ -40,7 +40,7 @@ public class CppByteSerializer implements ICppSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("int8_t {} = buffer.readByte();", result)).append(LS);
|
||||
|
||||
@@ -40,7 +40,7 @@ public class CppDoubleSerializer implements ICppSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("double {} = buffer.readDouble();", result)).append(LS);
|
||||
|
||||
@@ -40,7 +40,7 @@ public class CppFloatSerializer implements ICppSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("float {} = buffer.readFloat();", result)).append(LS);
|
||||
|
||||
@@ -40,7 +40,7 @@ public class CppIntSerializer implements ICppSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("int32_t {} = buffer.readInt();", result)).append(LS);
|
||||
|
||||
@@ -50,7 +50,7 @@ public class CppListSerializer implements ICppSerializer {
|
||||
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
String i = "i" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String i = "i" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("for (auto {} : {}) {", i, objectStr)).append(LS);
|
||||
|
||||
CodeGenerateCpp.cppSerializer(listField.getListElementRegistration().serializer())
|
||||
@@ -70,11 +70,11 @@ public class CppListSerializer implements ICppSerializer {
|
||||
|
||||
var listField = (ListField) fieldRegistration;
|
||||
|
||||
var result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
var typeName = CodeGenerateCpp.toCppClassName(listField.getType().toString());
|
||||
|
||||
var i = "index" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var size = "size" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var i = "index" + GenerateProtocolFile.localVariableId++;
|
||||
var size = "size" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
builder.append(StringUtils.format("int32_t {} = buffer.readInt();", size)).append(LS);
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
|
||||
@@ -40,7 +40,7 @@ public class CppLongSerializer implements ICppSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("auto {} = buffer.readLong();", result)).append(LS);
|
||||
|
||||
@@ -47,8 +47,8 @@ public class CppMapSerializer implements ICppSerializer {
|
||||
MapField mapField = (MapField) fieldRegistration;
|
||||
builder.append(StringUtils.format("buffer.writeInt({}.size());", objectStr)).append(LS);
|
||||
|
||||
String key = "keyElement" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String value = "valueElement" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String key = "keyElement" + GenerateProtocolFile.localVariableId++;
|
||||
String value = "valueElement" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("for (auto&[{}, {}] : {}) {", key, value, objectStr)).append(LS);
|
||||
@@ -73,18 +73,18 @@ public class CppMapSerializer implements ICppSerializer {
|
||||
}
|
||||
|
||||
MapField mapField = (MapField) fieldRegistration;
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
var typeName = CodeGenerateCpp.toCppClassName(mapField.getType().toString());
|
||||
|
||||
String size = "size" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String size = "size" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("int32_t {} = buffer.readInt();", size)).append(LS);
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("{} {};", typeName, result)).append(LS);
|
||||
|
||||
|
||||
String i = "index" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String i = "index" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("for (auto {} = 0; {} < {}; {}++) {", i, i, size, i)).append(LS);
|
||||
|
||||
|
||||
+2
-2
@@ -55,8 +55,8 @@ public class CppObjectProtocolSerializer implements ICppSerializer {
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
ObjectProtocolField objectProtocolField = (ObjectProtocolField) fieldRegistration;
|
||||
String uniquePtr = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String ptr = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String uniquePtr = "result" + GenerateProtocolFile.localVariableId++;
|
||||
String ptr = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
var protocolSimpleName = EnhanceObjectProtocolSerializer.getProtocolClassSimpleName(objectProtocolField.getProtocolId());
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ public class CppSetSerializer implements ICppSerializer {
|
||||
|
||||
builder.append(StringUtils.format("buffer.writeInt({}.size());", objectStr)).append(LS);
|
||||
|
||||
String element = "i" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String element = "i" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("for (auto {} : {}) {", element, objectStr)).append(LS);
|
||||
|
||||
@@ -68,12 +68,12 @@ public class CppSetSerializer implements ICppSerializer {
|
||||
}
|
||||
|
||||
SetField setField = (SetField) fieldRegistration;
|
||||
var result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
var typeName = CodeGenerateCpp.toCppClassName(setField.getType().toString());
|
||||
|
||||
var i = "index" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var size = "size" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var i = "index" + GenerateProtocolFile.localVariableId++;
|
||||
var size = "size" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("int32_t {} = buffer.readInt();", size)).append(LS);
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
// unity里不支持HashSet的初始化大小
|
||||
|
||||
@@ -40,7 +40,7 @@ public class CppShortSerializer implements ICppSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("auto {} = buffer.readShort();", result)).append(LS);
|
||||
|
||||
@@ -40,7 +40,7 @@ public class CppStringSerializer implements ICppSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("auto {} = buffer.readString();", result)).append(LS);
|
||||
|
||||
@@ -19,7 +19,6 @@ import com.zfoo.protocol.generate.GenerateOperation;
|
||||
import com.zfoo.protocol.generate.GenerateProtocolFile;
|
||||
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.IFieldRegistration;
|
||||
import com.zfoo.protocol.serializer.CodeLanguage;
|
||||
@@ -89,8 +88,6 @@ public class CodeGenerateCsharp implements ICodeGenerate {
|
||||
var protocol_class = new StringBuilder();
|
||||
var protocol_registration = new StringBuilder();
|
||||
for (var protocol_id : protocolIds) {
|
||||
GenerateProtocolFile.index.set(0);
|
||||
|
||||
var registration = (ProtocolRegistration) ProtocolManager.getProtocol(protocol_id);
|
||||
// protocol
|
||||
protocol_class.append(protocol_class(registration)).append(LS);
|
||||
@@ -163,8 +160,6 @@ public class CodeGenerateCsharp implements ICodeGenerate {
|
||||
|
||||
|
||||
private String formatProtocolTemplate(ProtocolRegistration registration) {
|
||||
GenerateProtocolFile.index.set(0);
|
||||
|
||||
var protocolTemplate = ClassUtils.getFileFromClassPathToString("csharp/ProtocolTemplate.cs");
|
||||
return CodeTemplatePlaceholder.formatTemplate(protocolTemplate, Map.of(
|
||||
CodeTemplatePlaceholder.protocol_class, protocol_class(registration)
|
||||
@@ -240,6 +235,7 @@ public class CodeGenerateCsharp implements ICodeGenerate {
|
||||
|
||||
|
||||
private String protocol_write_serialization(ProtocolRegistration registration) {
|
||||
GenerateProtocolFile.localVariableId = 0;
|
||||
var fields = registration.getFields();
|
||||
var fieldRegistrations = registration.getFieldRegistrations();
|
||||
var csBuilder = new StringBuilder();
|
||||
@@ -262,6 +258,7 @@ public class CodeGenerateCsharp implements ICodeGenerate {
|
||||
|
||||
|
||||
private String protocol_read_deserialization(ProtocolRegistration registration) {
|
||||
GenerateProtocolFile.localVariableId = 0;
|
||||
var fields = registration.getFields();
|
||||
var fieldRegistrations = registration.getFieldRegistrations();
|
||||
var csBuilder = new StringBuilder();
|
||||
|
||||
@@ -53,17 +53,17 @@ public class CsArraySerializer implements ICsSerializer {
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append(StringUtils.format("buffer.WriteInt({}.Length);", objectStr)).append(LS);
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
String length = "length" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String length = "length" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("int {} = {}.Length;", length, objectStr)).append(LS);
|
||||
|
||||
String i = "i" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String i = "i" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append(StringUtils.format("for (int {} = 0; {} < {}; {}++)", i, i, length, i)).append(LS);
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append("{").append(LS);
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep + 2);
|
||||
String element = "element" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String element = "element" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("{} {} = {}[{}];", CodeGenerateCsharp.toCsClassName(arrayField.getType().getSimpleName()), element, objectStr, i)).append(LS);
|
||||
|
||||
CodeGenerateCsharp.csSerializer(arrayField.getArrayElementRegistration().serializer())
|
||||
@@ -85,12 +85,12 @@ public class CsArraySerializer implements ICsSerializer {
|
||||
|
||||
|
||||
var arrayField = (ArrayField) fieldRegistration;
|
||||
var result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
var typeName = CodeGenerateCsharp.toCsClassName(arrayField.getType().getSimpleName());
|
||||
|
||||
var i = "index" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var size = "size" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var i = "index" + GenerateProtocolFile.localVariableId++;
|
||||
var size = "size" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("int {} = buffer.ReadInt();", size)).append(LS);
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
|
||||
@@ -34,7 +34,7 @@ public class CsBooleanSerializer implements ICsSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("bool {} = buffer.ReadBool();", result)).append(LS);
|
||||
|
||||
@@ -34,7 +34,7 @@ public class CsByteSerializer implements ICsSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("byte {} = buffer.ReadByte();", result)).append(LS);
|
||||
|
||||
@@ -34,7 +34,7 @@ public class CsDoubleSerializer implements ICsSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("double {} = buffer.ReadDouble();", result)).append(LS);
|
||||
|
||||
@@ -34,7 +34,7 @@ public class CsFloatSerializer implements ICsSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("float {} = buffer.ReadFloat();", result)).append(LS);
|
||||
|
||||
@@ -34,7 +34,7 @@ public class CsIntSerializer implements ICsSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("int {} = buffer.ReadInt();", result)).append(LS);
|
||||
|
||||
@@ -54,17 +54,17 @@ public class CsListSerializer implements ICsSerializer {
|
||||
builder.append(StringUtils.format("buffer.WriteInt({}.Count);", objectStr)).append(LS);
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
String length = "length" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String length = "length" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("int {} = {}.Count;", length, objectStr)).append(LS);
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
String i = "i" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String i = "i" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("for (int {} = 0; {} < {}; {}++)", i, i, length, i)).append(LS);
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append("{").append(LS);
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep + 2);
|
||||
String element = "element" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String element = "element" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("var {} = {}[{}];", element, objectStr, i)).append(LS);
|
||||
|
||||
CodeGenerateCsharp.csSerializer(listField.getListElementRegistration().serializer())
|
||||
@@ -85,12 +85,12 @@ public class CsListSerializer implements ICsSerializer {
|
||||
}
|
||||
|
||||
var listField = (ListField) fieldRegistration;
|
||||
var result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
var typeName = CodeGenerateCsharp.toCsClassName(listField.getType().toString());
|
||||
|
||||
var i = "index" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var size = "size" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var i = "index" + GenerateProtocolFile.localVariableId++;
|
||||
var size = "size" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
builder.append(StringUtils.format("int {} = buffer.ReadInt();", size)).append(LS);
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
|
||||
@@ -34,7 +34,7 @@ public class CsLongSerializer implements ICsSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("long {} = buffer.ReadLong();", result)).append(LS);
|
||||
|
||||
@@ -56,7 +56,7 @@ public class CsMapSerializer implements ICsSerializer {
|
||||
builder.append(StringUtils.format("buffer.WriteInt({}.Count);", objectStr)).append(LS);
|
||||
|
||||
|
||||
String i = "i" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String i = "i" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append(StringUtils.format("foreach (var {} in {})", i, objectStr)).append(LS);
|
||||
@@ -65,8 +65,8 @@ public class CsMapSerializer implements ICsSerializer {
|
||||
builder.append("{").append(LS);
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep + 2);
|
||||
String key = "keyElement" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String value = "valueElement" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String key = "keyElement" + GenerateProtocolFile.localVariableId++;
|
||||
String value = "valueElement" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("var {} = {}.Key;", key, i)).append(LS);
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep + 2);
|
||||
@@ -92,11 +92,11 @@ public class CsMapSerializer implements ICsSerializer {
|
||||
}
|
||||
|
||||
MapField mapField = (MapField) fieldRegistration;
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
var typeName = CodeGenerateCsharp.toCsClassName(mapField.getType().toString());
|
||||
|
||||
String size = "size" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String size = "size" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("int {} = buffer.ReadInt();", size)).append(LS);
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
@@ -108,7 +108,7 @@ public class CsMapSerializer implements ICsSerializer {
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append("{").append(LS);
|
||||
|
||||
String i = "index" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String i = "index" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append(StringUtils.format("for (var {} = 0; {} < {}; {}++)", i, i, size, i)).append(LS);
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
|
||||
+1
-1
@@ -40,7 +40,7 @@ public class CsObjectProtocolSerializer implements ICsSerializer {
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
ObjectProtocolField objectProtocolField = (ObjectProtocolField) fieldRegistration;
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
var protocolSimpleName = EnhanceObjectProtocolSerializer.getProtocolClassSimpleName(objectProtocolField.getProtocolId());
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@ public class CsSetSerializer implements ICsSerializer {
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append(StringUtils.format("buffer.WriteInt({}.Count);", objectStr)).append(LS);
|
||||
|
||||
String element = "i" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String element = "i" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append(StringUtils.format("foreach (var {} in {})", element, objectStr)).append(LS);
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
@@ -78,12 +78,12 @@ public class CsSetSerializer implements ICsSerializer {
|
||||
}
|
||||
|
||||
SetField setField = (SetField) fieldRegistration;
|
||||
var result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
var typeName = CodeGenerateCsharp.toCsClassName(setField.getType().toString());
|
||||
|
||||
var i = "index" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var size = "size" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var i = "index" + GenerateProtocolFile.localVariableId++;
|
||||
var size = "size" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("int {} = buffer.ReadInt();", size)).append(LS);
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
// unity里不支持HashSet的初始化大小
|
||||
|
||||
@@ -34,7 +34,7 @@ public class CsShortSerializer implements ICsSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("short {} = buffer.ReadShort();", result)).append(LS);
|
||||
|
||||
@@ -34,7 +34,7 @@ public class CsStringSerializer implements ICsSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("string {} = buffer.ReadString();", result)).append(LS);
|
||||
|
||||
+8
-8
@@ -37,16 +37,16 @@ public class EnhanceArraySerializer implements IEnhanceSerializer {
|
||||
var arrayField = (ArrayField) fieldRegistration;
|
||||
var arrayName = CutDownArraySerializer.getInstance().getArrayClassName(arrayField);
|
||||
|
||||
var array = "array" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var length = "length" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var array = "array" + GenerateProtocolFile.localVariableId++;
|
||||
var length = "length" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("{}[] {} = {};", arrayName, array, objectStr));
|
||||
builder.append(StringUtils.format("int {} = ArrayUtils.length({});", length, array));
|
||||
builder.append(StringUtils.format("{}.writeInt($1,{});", EnhanceUtils.byteBufUtils, length));
|
||||
|
||||
var i = "i" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var i = "i" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("for(int {}=0; {}<{}; {}++){", i, i, length, i));
|
||||
|
||||
var element = "element" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var element = "element" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("{} {} = {}[{}];", arrayName, element, array, i));
|
||||
|
||||
EnhanceUtils.enhanceSerializer(arrayField.getArrayElementRegistration().serializer())
|
||||
@@ -65,13 +65,13 @@ public class EnhanceArraySerializer implements IEnhanceSerializer {
|
||||
var arrayField = (ArrayField) fieldRegistration;
|
||||
var arrayName = CutDownArraySerializer.getInstance().getArrayClassName(arrayField);
|
||||
|
||||
var array = "array" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var length = "length" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var array = "array" + GenerateProtocolFile.localVariableId++;
|
||||
var length = "length" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("int {} = {}.readInt($1);", length, EnhanceUtils.byteBufUtils));
|
||||
|
||||
builder.append(StringUtils.format("{}[] {} = new {}[{}];", arrayName, array, arrayName, length));
|
||||
|
||||
var i = "i" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var i = "i" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("for(int {}=0; {} < {}; {}++){", i, i, length, i));
|
||||
var readObject = EnhanceUtils.enhanceSerializer(arrayField.getArrayElementRegistration().serializer())
|
||||
.readObject(builder, field, arrayField.getArrayElementRegistration());
|
||||
@@ -83,7 +83,7 @@ public class EnhanceArraySerializer implements IEnhanceSerializer {
|
||||
public String defaultValue(StringBuilder builder, Field field, IFieldRegistration fieldRegistration) {
|
||||
var arrayField = (ArrayField) fieldRegistration;
|
||||
var arrayName = CutDownArraySerializer.getInstance().getArrayClassName(arrayField);
|
||||
var array = "array" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var array = "array" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("{}[] {} = new {}[0];", arrayName, array, arrayName));
|
||||
return array;
|
||||
}
|
||||
|
||||
+2
-2
@@ -36,7 +36,7 @@ public class EnhanceBooleanSerializer implements IEnhanceSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, Field field, IFieldRegistration fieldRegistration) {
|
||||
var result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
if (isPrimitiveField(field)) {
|
||||
builder.append(StringUtils.format("boolean {} = {}.readBoolean($1);", result, EnhanceUtils.byteBufUtils));
|
||||
} else {
|
||||
@@ -47,7 +47,7 @@ public class EnhanceBooleanSerializer implements IEnhanceSerializer {
|
||||
|
||||
@Override
|
||||
public String defaultValue(StringBuilder builder, Field field, IFieldRegistration fieldRegistration) {
|
||||
var result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
if (isPrimitiveField(field)) {
|
||||
builder.append(StringUtils.format("boolean {} = false;", result));
|
||||
} else {
|
||||
|
||||
+2
-2
@@ -36,7 +36,7 @@ public class EnhanceByteSerializer implements IEnhanceSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, Field field, IFieldRegistration fieldRegistration) {
|
||||
var result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
if (isPrimitiveField(field)) {
|
||||
builder.append(StringUtils.format("byte {} = {}.readByte($1);", result, EnhanceUtils.byteBufUtils));
|
||||
} else {
|
||||
@@ -47,7 +47,7 @@ public class EnhanceByteSerializer implements IEnhanceSerializer {
|
||||
|
||||
@Override
|
||||
public String defaultValue(StringBuilder builder, Field field, IFieldRegistration fieldRegistration) {
|
||||
var result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
if (isPrimitiveField(field)) {
|
||||
builder.append(StringUtils.format("byte {} = 0;", result));
|
||||
} else {
|
||||
|
||||
+2
-2
@@ -36,7 +36,7 @@ public class EnhanceDoubleSerializer implements IEnhanceSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, Field field, IFieldRegistration fieldRegistration) {
|
||||
var result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
if (isPrimitiveField(field)) {
|
||||
builder.append(StringUtils.format("double {} = {}.readDouble($1);", result, EnhanceUtils.byteBufUtils));
|
||||
} else {
|
||||
@@ -47,7 +47,7 @@ public class EnhanceDoubleSerializer implements IEnhanceSerializer {
|
||||
|
||||
@Override
|
||||
public String defaultValue(StringBuilder builder, Field field, IFieldRegistration fieldRegistration) {
|
||||
var result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
if (isPrimitiveField(field)) {
|
||||
builder.append(StringUtils.format("double {} = 0D;", result));
|
||||
} else {
|
||||
|
||||
+2
-2
@@ -36,7 +36,7 @@ public class EnhanceFloatSerializer implements IEnhanceSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, Field field, IFieldRegistration fieldRegistration) {
|
||||
var result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
if (isPrimitiveField(field)) {
|
||||
builder.append(StringUtils.format("float {} = {}.readFloat($1);", result, EnhanceUtils.byteBufUtils));
|
||||
} else {
|
||||
@@ -47,7 +47,7 @@ public class EnhanceFloatSerializer implements IEnhanceSerializer {
|
||||
|
||||
@Override
|
||||
public String defaultValue(StringBuilder builder, Field field, IFieldRegistration fieldRegistration) {
|
||||
var result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
if (isPrimitiveField(field)) {
|
||||
builder.append(StringUtils.format("float {} = 0F;", result));
|
||||
} else {
|
||||
|
||||
+2
-2
@@ -36,7 +36,7 @@ public class EnhanceIntSerializer implements IEnhanceSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, Field field, IFieldRegistration fieldRegistration) {
|
||||
var result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
if (isPrimitiveField(field)) {
|
||||
builder.append(StringUtils.format("int {} = {}.readInt($1);", result, EnhanceUtils.byteBufUtils));
|
||||
} else {
|
||||
@@ -47,7 +47,7 @@ public class EnhanceIntSerializer implements IEnhanceSerializer {
|
||||
|
||||
@Override
|
||||
public String defaultValue(StringBuilder builder, Field field, IFieldRegistration fieldRegistration) {
|
||||
var result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
if (isPrimitiveField(field)) {
|
||||
builder.append(StringUtils.format("int {} = 0;", result));
|
||||
} else {
|
||||
|
||||
+7
-7
@@ -36,16 +36,16 @@ public class EnhanceListSerializer implements IEnhanceSerializer {
|
||||
|
||||
var listField = (ListField) fieldRegistration;
|
||||
|
||||
var list = "list" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var list = "list" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("List {} = (List){};", list, objectStr));
|
||||
|
||||
builder.append(StringUtils.format("{}.writeInt($1, CollectionUtils.size({}));", EnhanceUtils.byteBufUtils, list));
|
||||
|
||||
var iterator = "iterator" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var iterator = "iterator" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("Iterator {} = CollectionUtils.iterator({});", iterator, list));
|
||||
builder.append(StringUtils.format("while({}.hasNext()){", iterator));
|
||||
|
||||
var element = "element" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var element = "element" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("Object {}={}.next();", element, iterator));
|
||||
EnhanceUtils.enhanceSerializer(listField.getListElementRegistration().serializer())
|
||||
.writeObject(builder, element, field, listField.getListElementRegistration());
|
||||
@@ -61,14 +61,14 @@ public class EnhanceListSerializer implements IEnhanceSerializer {
|
||||
}
|
||||
|
||||
var listField = (ListField) fieldRegistration;
|
||||
var list = "list" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var list = "list" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
var size = "size" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var size = "size" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("int {}={}.readInt($1);", size, EnhanceUtils.byteBufUtils));
|
||||
|
||||
builder.append(StringUtils.format("List {} = CollectionUtils.newList({});", list, size));
|
||||
|
||||
var i = "i" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var i = "i" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
builder.append(StringUtils.format("for(int {}=0; {}<{}; {}++){", i, i, size, i));
|
||||
var readObject = EnhanceUtils.enhanceSerializer(listField.getListElementRegistration().serializer()).readObject(builder, field, listField.getListElementRegistration());
|
||||
@@ -79,7 +79,7 @@ public class EnhanceListSerializer implements IEnhanceSerializer {
|
||||
@Override
|
||||
public String defaultValue(StringBuilder builder, Field field, IFieldRegistration fieldRegistration) {
|
||||
var listField = (ListField) fieldRegistration;
|
||||
var list = "list" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var list = "list" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("List {} = CollectionUtils.newList(0);", list));
|
||||
return list;
|
||||
}
|
||||
|
||||
+2
-2
@@ -36,7 +36,7 @@ public class EnhanceLongSerializer implements IEnhanceSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, Field field, IFieldRegistration fieldRegistration) {
|
||||
var result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
if (isPrimitiveField(field)) {
|
||||
builder.append(StringUtils.format("long {} = {}.readLong($1);", result, EnhanceUtils.byteBufUtils));
|
||||
} else {
|
||||
@@ -47,7 +47,7 @@ public class EnhanceLongSerializer implements IEnhanceSerializer {
|
||||
|
||||
@Override
|
||||
public String defaultValue(StringBuilder builder, Field field, IFieldRegistration fieldRegistration) {
|
||||
var result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
if (isPrimitiveField(field)) {
|
||||
builder.append(StringUtils.format("long {} = 0;", result));
|
||||
} else {
|
||||
|
||||
+9
-9
@@ -41,21 +41,21 @@ public class EnhanceMapSerializer implements IEnhanceSerializer {
|
||||
var keySerializer = keyRegistration.serializer();
|
||||
var valueSerializer = valueRegistration.serializer();
|
||||
|
||||
var map = "map" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var map = "map" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("Map {} = (Map){};", map, objectStr));
|
||||
builder.append(StringUtils.format("{}.writeInt($1, CollectionUtils.size({}));", EnhanceUtils.byteBufUtils, map));
|
||||
|
||||
var iterator = "iterator" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var iterator = "iterator" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("Iterator {} = CollectionUtils.iterator({});", iterator, map));
|
||||
builder.append(StringUtils.format("while({}.hasNext()) {", iterator));
|
||||
|
||||
var entry = "entry" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var entry = "entry" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("{} {}=({}){}.next();", Map.Entry.class.getCanonicalName(), entry, Map.Entry.class.getCanonicalName(), iterator));
|
||||
|
||||
var key = "key" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var key = "key" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("Object {} = {}.getKey();", key, entry));
|
||||
|
||||
var value = "value" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var value = "value" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("Object {} = {}.getValue();", value, entry));
|
||||
|
||||
EnhanceUtils.enhanceSerializer(keyRegistration.serializer()).writeObject(builder, key, field, keyRegistration);
|
||||
@@ -75,13 +75,13 @@ public class EnhanceMapSerializer implements IEnhanceSerializer {
|
||||
var keyRegistration = mapField.getMapKeyRegistration();
|
||||
var valueRegistration = mapField.getMapValueRegistration();
|
||||
|
||||
var map = "map" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var map = "map" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
var size = "size" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var size = "size" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("int {}={}.readInt($1);", size, EnhanceUtils.byteBufUtils));
|
||||
builder.append(StringUtils.format("Map {} = CollectionUtils.newMap({});", map, size));
|
||||
|
||||
var i = "i" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var i = "i" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("for(int {}=0; {}<{}; {}++){", i, i, size, i));
|
||||
|
||||
var keyObject = EnhanceUtils.enhanceSerializer(keyRegistration.serializer()).readObject(builder, field, keyRegistration);
|
||||
@@ -94,7 +94,7 @@ public class EnhanceMapSerializer implements IEnhanceSerializer {
|
||||
@Override
|
||||
public String defaultValue(StringBuilder builder, Field field, IFieldRegistration fieldRegistration) {
|
||||
var mapField = (MapField) fieldRegistration;
|
||||
var map = "map" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var map = "map" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("Map {} = CollectionUtils.newMap(0);", map));
|
||||
return map;
|
||||
}
|
||||
|
||||
+2
-2
@@ -38,7 +38,7 @@ public class EnhanceObjectProtocolSerializer implements IEnhanceSerializer {
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, Field field, IFieldRegistration fieldRegistration) {
|
||||
var objectProtocolField = (ObjectProtocolField) fieldRegistration;
|
||||
var result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
var protocolName = getProtocolClassCanonicalName(objectProtocolField.getProtocolId());
|
||||
builder.append(StringUtils.format("{} {} = ({}){}.read($1);", protocolName, result, protocolName, EnhanceUtils.getProtocolRegistrationFieldNameByProtocolId(objectProtocolField.getProtocolId())));
|
||||
return result;
|
||||
@@ -47,7 +47,7 @@ public class EnhanceObjectProtocolSerializer implements IEnhanceSerializer {
|
||||
@Override
|
||||
public String defaultValue(StringBuilder builder, Field field, IFieldRegistration fieldRegistration) {
|
||||
var objectProtocolField = (ObjectProtocolField) fieldRegistration;
|
||||
var result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
var protocolName = getProtocolClassCanonicalName(objectProtocolField.getProtocolId());
|
||||
builder.append(StringUtils.format("{} {} = null;", protocolName, result));
|
||||
return result;
|
||||
|
||||
+7
-7
@@ -35,16 +35,16 @@ public class EnhanceSetSerializer implements IEnhanceSerializer {
|
||||
}
|
||||
|
||||
var setField = (SetField) fieldRegistration;
|
||||
var set = "set" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var set = "set" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("Set {} = (Set){};", set, objectStr));
|
||||
|
||||
builder.append(StringUtils.format("{}.writeInt($1, CollectionUtils.size({}));", EnhanceUtils.byteBufUtils, set));
|
||||
|
||||
var iterator = "iterator" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var iterator = "iterator" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("Iterator {} = CollectionUtils.iterator({});", iterator, set));
|
||||
builder.append(StringUtils.format("while({}.hasNext()) {", iterator));
|
||||
|
||||
var element = "element" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var element = "element" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("Object {}={}.next();", element, iterator));
|
||||
EnhanceUtils.enhanceSerializer(setField.getSetElementRegistration().serializer())
|
||||
.writeObject(builder, element, field, setField.getSetElementRegistration());
|
||||
@@ -60,13 +60,13 @@ public class EnhanceSetSerializer implements IEnhanceSerializer {
|
||||
}
|
||||
|
||||
var setField = (SetField) fieldRegistration;
|
||||
var set = "set" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var set = "set" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
var size = "size" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var size = "size" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("int {} = {}.readInt($1);", size, EnhanceUtils.byteBufUtils));
|
||||
builder.append(StringUtils.format("Set {} = CollectionUtils.newSet({});", set, size));
|
||||
|
||||
var i = "i" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var i = "i" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("for(int {}=0; {}<{}; {}++){", i, i, size, i));
|
||||
|
||||
var readObject = EnhanceUtils.enhanceSerializer(setField.getSetElementRegistration().serializer()).readObject(builder, field, setField.getSetElementRegistration());
|
||||
@@ -77,7 +77,7 @@ public class EnhanceSetSerializer implements IEnhanceSerializer {
|
||||
@Override
|
||||
public String defaultValue(StringBuilder builder, Field field, IFieldRegistration fieldRegistration) {
|
||||
var setField = (SetField) fieldRegistration;
|
||||
var set = "set" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var set = "set" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("Set {} = CollectionUtils.newSet(0);", set));
|
||||
return set;
|
||||
}
|
||||
|
||||
+2
-2
@@ -36,7 +36,7 @@ public class EnhanceShortSerializer implements IEnhanceSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, Field field, IFieldRegistration fieldRegistration) {
|
||||
var result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
if (isPrimitiveField(field)) {
|
||||
builder.append(StringUtils.format("short {} = {}.readShort($1);", result, EnhanceUtils.byteBufUtils));
|
||||
} else {
|
||||
@@ -47,7 +47,7 @@ public class EnhanceShortSerializer implements IEnhanceSerializer {
|
||||
|
||||
@Override
|
||||
public String defaultValue(StringBuilder builder, Field field, IFieldRegistration fieldRegistration) {
|
||||
var result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
if (isPrimitiveField(field)) {
|
||||
builder.append(StringUtils.format("short {} = 0;", result));
|
||||
} else {
|
||||
|
||||
+2
-2
@@ -32,14 +32,14 @@ public class EnhanceStringSerializer implements IEnhanceSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, Field field, IFieldRegistration fieldRegistration) {
|
||||
var result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("String {} = {}.readString($1);", result, EnhanceUtils.byteBufUtils));
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String defaultValue(StringBuilder builder, Field field, IFieldRegistration fieldRegistration) {
|
||||
var result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("String {} = \"\";", result));
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -54,7 +54,7 @@ public class EsArraySerializer implements IEsSerializer {
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append(StringUtils.format("buffer.writeInt({}.length);", objectStr)).append(LS);
|
||||
|
||||
String element = "element" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String element = "element" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append(StringUtils.format("{}.forEach({} => {", objectStr, element)).append(LS);
|
||||
GenerateEsUtils.esSerializer(arrayField.getArrayElementRegistration().serializer())
|
||||
@@ -74,12 +74,12 @@ public class EsArraySerializer implements IEsSerializer {
|
||||
}
|
||||
|
||||
ArrayField arrayField = (ArrayField) fieldRegistration;
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
builder.append(StringUtils.format("const {} = [];", result)).append(LS);
|
||||
|
||||
String i = "index" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String size = "size" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String i = "index" + GenerateProtocolFile.localVariableId++;
|
||||
String size = "size" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("const {} = buffer.readInt();", size)).append(LS);
|
||||
|
||||
@@ -39,7 +39,7 @@ public class EsBooleanSerializer implements IEsSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("const {} = buffer.readBoolean(); ", result)).append(LS);
|
||||
return result;
|
||||
|
||||
@@ -39,7 +39,7 @@ public class EsByteSerializer implements IEsSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("const {} = buffer.readByte();", result)).append(LS);
|
||||
return result;
|
||||
|
||||
@@ -39,7 +39,7 @@ public class EsDoubleSerializer implements IEsSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("const {} = buffer.readDouble();", result)).append(LS);
|
||||
return result;
|
||||
|
||||
@@ -39,7 +39,7 @@ public class EsFloatSerializer implements IEsSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("const {} = buffer.readFloat();", result)).append(LS);
|
||||
return result;
|
||||
|
||||
@@ -39,7 +39,7 @@ public class EsIntSerializer implements IEsSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("const {} = buffer.readInt();", result)).append(LS);
|
||||
return result;
|
||||
|
||||
@@ -53,7 +53,7 @@ public class EsListSerializer implements IEsSerializer {
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append(StringUtils.format("buffer.writeInt({}.length);", objectStr)).append(LS);
|
||||
|
||||
String element = "element" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String element = "element" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append(StringUtils.format("{}.forEach({} => {", objectStr, element)).append(LS);
|
||||
GenerateEsUtils.esSerializer(listField.getListElementRegistration().serializer())
|
||||
@@ -73,19 +73,19 @@ public class EsListSerializer implements IEsSerializer {
|
||||
}
|
||||
|
||||
ListField listField = (ListField) fieldRegistration;
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
builder.append(StringUtils.format("const {} = [];", result)).append(LS);
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
String size = "size" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String size = "size" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("const {} = buffer.readInt();", size)).append(LS);
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("if ({} > 0) {", size)).append(LS);
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
String i = "index" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String i = "index" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("for (let {} = 0; {} < {}; {}++) {", i, i, size, i)).append(LS);
|
||||
String readObject = GenerateEsUtils.esSerializer(listField.getListElementRegistration().serializer())
|
||||
.readObject(builder, deep + 2, field, listField.getListElementRegistration());
|
||||
|
||||
@@ -39,7 +39,7 @@ public class EsLongSerializer implements IEsSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("const {} = buffer.readLong();", result)).append(LS);
|
||||
return result;
|
||||
|
||||
@@ -53,8 +53,8 @@ public class EsMapSerializer implements IEsSerializer {
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append(StringUtils.format("buffer.writeInt({}.size);", objectStr)).append(LS);
|
||||
|
||||
String key = "key" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String value = "value" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String key = "key" + GenerateProtocolFile.localVariableId++;
|
||||
String value = "value" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append(StringUtils.format("{}.forEach(({}, {}) => {", objectStr, value, key)).append(LS);
|
||||
@@ -77,18 +77,18 @@ public class EsMapSerializer implements IEsSerializer {
|
||||
}
|
||||
|
||||
MapField mapField = (MapField) fieldRegistration;
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
builder.append(StringUtils.format("const {} = new Map();", result)).append(LS);
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
String size = "size" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String size = "size" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("const {} = buffer.readInt();", size)).append(LS);
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("if ({} > 0) {", size)).append(LS);
|
||||
|
||||
String i = "index" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String i = "index" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append(StringUtils.format("for (let {} = 0; {} < {}; {}++) {", i, i, size, i)).append(LS);
|
||||
|
||||
|
||||
+1
-1
@@ -46,7 +46,7 @@ public class EsObjectProtocolSerializer implements IEsSerializer {
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
ObjectProtocolField objectProtocolField = (ObjectProtocolField) fieldRegistration;
|
||||
var result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("const {} = buffer.readPacket({});", result, objectProtocolField.getProtocolId())).append(LS);
|
||||
return result;
|
||||
|
||||
@@ -54,7 +54,7 @@ public class EsSetSerializer implements IEsSerializer {
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append(StringUtils.format("buffer.writeInt({}.size);", objectStr)).append(LS);
|
||||
|
||||
String element = "element" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String element = "element" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append(StringUtils.format("{}.forEach({} => {", objectStr, element)).append(LS);
|
||||
GenerateEsUtils.esSerializer(setField.getSetElementRegistration().serializer())
|
||||
@@ -74,19 +74,19 @@ public class EsSetSerializer implements IEsSerializer {
|
||||
}
|
||||
|
||||
SetField setField = (SetField) fieldRegistration;
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
builder.append(StringUtils.format("const {} = new Set();", result)).append(LS);
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
String size = "size" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String size = "size" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("const {} = buffer.readInt();", size)).append(LS);
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("if ({} > 0) {", size)).append(LS);
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
String i = "index" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String i = "index" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("for (let {} = 0; {} < {}; {}++) {", i, i, size, i)).append(LS);
|
||||
String readObject = GenerateEsUtils.esSerializer(setField.getSetElementRegistration().serializer())
|
||||
.readObject(builder, deep + 2, field, setField.getSetElementRegistration());
|
||||
|
||||
@@ -39,7 +39,7 @@ public class EsShortSerializer implements IEsSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("const {} = buffer.readShort();", result)).append(LS);
|
||||
return result;
|
||||
|
||||
@@ -39,7 +39,7 @@ public class EsStringSerializer implements IEsSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("const {} = buffer.readString();", result)).append(LS);
|
||||
return result;
|
||||
|
||||
@@ -18,7 +18,6 @@ import com.zfoo.protocol.generate.GenerateOperation;
|
||||
import com.zfoo.protocol.generate.GenerateProtocolFile;
|
||||
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.serializer.CodeLanguage;
|
||||
import com.zfoo.protocol.serializer.reflect.*;
|
||||
@@ -109,9 +108,6 @@ public abstract class GenerateEsUtils {
|
||||
}
|
||||
|
||||
public static void createEsProtocolFile(ProtocolRegistration registration) throws IOException {
|
||||
// 初始化index
|
||||
GenerateProtocolFile.index.set(0);
|
||||
|
||||
var protocolId = registration.protocolId();
|
||||
var registrationConstructor = registration.getConstructor();
|
||||
var protocolClazzName = registrationConstructor.getDeclaringClass().getSimpleName();
|
||||
@@ -157,6 +153,7 @@ public abstract class GenerateEsUtils {
|
||||
}
|
||||
|
||||
private static String writeObject(ProtocolRegistration registration) {
|
||||
GenerateProtocolFile.localVariableId = 0;
|
||||
var fields = registration.getFields();
|
||||
var fieldRegistrations = registration.getFieldRegistrations();
|
||||
var jsBuilder = new StringBuilder();
|
||||
@@ -178,6 +175,7 @@ public abstract class GenerateEsUtils {
|
||||
}
|
||||
|
||||
private static String readObject(ProtocolRegistration registration) {
|
||||
GenerateProtocolFile.localVariableId = 0;
|
||||
var fields = registration.getFields();
|
||||
var fieldRegistrations = registration.getFieldRegistrations();
|
||||
var jsBuilder = new StringBuilder();
|
||||
|
||||
@@ -64,7 +64,7 @@ public class GdArraySerializer implements IGdSerializer {
|
||||
GenerateProtocolFile.addTabAscii(builder, deep + 1);
|
||||
builder.append(StringUtils.format("buffer.writeInt({}.size())", objectStr)).append(LS);
|
||||
|
||||
String element = "element" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String element = "element" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTabAscii(builder, deep + 1);
|
||||
builder.append(StringUtils.format("for {} in {}:", element, objectStr)).append(LS);
|
||||
GenerateGdUtils.gdSerializer(arrayField.getArrayElementRegistration().serializer())
|
||||
@@ -80,12 +80,12 @@ public class GdArraySerializer implements IGdSerializer {
|
||||
}
|
||||
|
||||
ArrayField arrayField = (ArrayField) fieldRegistration;
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
builder.append(StringUtils.format("var {} = []", result)).append(LS);
|
||||
|
||||
String i = "index" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String size = "size" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String i = "index" + GenerateProtocolFile.localVariableId++;
|
||||
String size = "size" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTabAscii(builder, deep);
|
||||
builder.append(StringUtils.format("var {} = buffer.readInt()", size)).append(LS);
|
||||
|
||||
+1
-1
@@ -40,7 +40,7 @@ public class GdBooleanSerializer implements IGdSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTabAscii(builder, deep);
|
||||
builder.append(StringUtils.format("var {} = buffer.readBool() ", result)).append(LS);
|
||||
|
||||
@@ -40,7 +40,7 @@ public class GdByteSerializer implements IGdSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTabAscii(builder, deep);
|
||||
builder.append(StringUtils.format("var {} = buffer.readByte()", result)).append(LS);
|
||||
|
||||
+1
-1
@@ -40,7 +40,7 @@ public class GdDoubleSerializer implements IGdSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTabAscii(builder, deep);
|
||||
builder.append(StringUtils.format("var {} = buffer.readDouble()", result)).append(LS);
|
||||
|
||||
@@ -40,7 +40,7 @@ public class GdFloatSerializer implements IGdSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTabAscii(builder, deep);
|
||||
builder.append(StringUtils.format("var {} = buffer.readFloat()", result)).append(LS);
|
||||
|
||||
@@ -39,7 +39,7 @@ public class GdIntSerializer implements IGdSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTabAscii(builder, deep);
|
||||
builder.append(StringUtils.format("var {} = buffer.readInt()", result)).append(LS);
|
||||
|
||||
@@ -55,7 +55,7 @@ public class GdListSerializer implements IGdSerializer {
|
||||
GenerateProtocolFile.addTabAscii(builder, deep + 1);
|
||||
builder.append(StringUtils.format("buffer.writeInt({}.size())", objectStr)).append(LS);
|
||||
|
||||
String element = "element" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String element = "element" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTabAscii(builder, deep + 1);
|
||||
builder.append(StringUtils.format("for {} in {}:", element, objectStr)).append(LS);
|
||||
GenerateGdUtils.gdSerializer(listField.getListElementRegistration().serializer())
|
||||
@@ -71,12 +71,12 @@ public class GdListSerializer implements IGdSerializer {
|
||||
}
|
||||
|
||||
ListField listField = (ListField) fieldRegistration;
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
builder.append(StringUtils.format("var {} = []", result)).append(LS);
|
||||
|
||||
String i = "index" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String size = "size" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String i = "index" + GenerateProtocolFile.localVariableId++;
|
||||
String size = "size" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTabAscii(builder, deep);
|
||||
builder.append(StringUtils.format("var {} = buffer.readInt()", size)).append(LS);
|
||||
|
||||
@@ -39,7 +39,7 @@ public class GdLongSerializer implements IGdSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTabAscii(builder, deep);
|
||||
builder.append(StringUtils.format("var {} = buffer.readLong()", result)).append(LS);
|
||||
|
||||
@@ -52,8 +52,8 @@ public class GdMapSerializer implements IGdSerializer {
|
||||
GenerateProtocolFile.addTabAscii(builder, deep + 1);
|
||||
builder.append(StringUtils.format("buffer.writeInt({}.size())", objectStr)).append(LS);
|
||||
|
||||
String key = "key" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String value = "value" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String key = "key" + GenerateProtocolFile.localVariableId++;
|
||||
String value = "value" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTabAscii(builder, deep + 1);
|
||||
builder.append(StringUtils.format("for {} in {}:", key, objectStr)).append(LS);
|
||||
@@ -74,18 +74,18 @@ public class GdMapSerializer implements IGdSerializer {
|
||||
}
|
||||
|
||||
MapField mapField = (MapField) fieldRegistration;
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
builder.append(StringUtils.format("var {} = {}", result)).append(LS);
|
||||
|
||||
GenerateProtocolFile.addTabAscii(builder, deep);
|
||||
String size = "size" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String size = "size" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("var {} = buffer.readInt()", size)).append(LS);
|
||||
|
||||
GenerateProtocolFile.addTabAscii(builder, deep);
|
||||
builder.append(StringUtils.format("if ({} > 0):", size)).append(LS);
|
||||
|
||||
String i = "index" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String i = "index" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTabAscii(builder, deep + 1);
|
||||
builder.append(StringUtils.format("for {} in range({}):", i, size)).append(LS);
|
||||
|
||||
|
||||
+1
-1
@@ -44,7 +44,7 @@ public class GdObjectProtocolSerializer implements IGdSerializer {
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
ObjectProtocolField objectProtocolField = (ObjectProtocolField) fieldRegistration;
|
||||
var result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTabAscii(builder, deep);
|
||||
builder.append(StringUtils.format("var {} = buffer.readPacket({})", result, objectProtocolField.getProtocolId())).append(LS);
|
||||
return result;
|
||||
|
||||
@@ -55,7 +55,7 @@ public class GdSetSerializer implements IGdSerializer {
|
||||
GenerateProtocolFile.addTabAscii(builder, deep + 1);
|
||||
builder.append(StringUtils.format("buffer.writeInt({}.size())", objectStr)).append(LS);
|
||||
|
||||
String element = "element" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String element = "element" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTabAscii(builder, deep + 1);
|
||||
builder.append(StringUtils.format("for {} in {}:", element, objectStr)).append(LS);
|
||||
GenerateGdUtils.gdSerializer(setField.getSetElementRegistration().serializer())
|
||||
@@ -71,12 +71,12 @@ public class GdSetSerializer implements IGdSerializer {
|
||||
}
|
||||
|
||||
SetField setField = (SetField) fieldRegistration;
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
builder.append(StringUtils.format("var {} = []", result)).append(LS);
|
||||
|
||||
String i = "index" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String size = "size" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String i = "index" + GenerateProtocolFile.localVariableId++;
|
||||
String size = "size" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTabAscii(builder, deep);
|
||||
builder.append(StringUtils.format("var {} = buffer.readInt()", size)).append(LS);
|
||||
|
||||
@@ -40,7 +40,7 @@ public class GdShortSerializer implements IGdSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTabAscii(builder, deep);
|
||||
builder.append(StringUtils.format("var {} = buffer.readShort()", result)).append(LS);
|
||||
|
||||
+1
-1
@@ -39,7 +39,7 @@ public class GdStringSerializer implements IGdSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTabAscii(builder, deep);
|
||||
builder.append(StringUtils.format("var {} = buffer.readString()", result)).append(LS);
|
||||
return result;
|
||||
|
||||
@@ -19,7 +19,6 @@ import com.zfoo.protocol.generate.GenerateOperation;
|
||||
import com.zfoo.protocol.generate.GenerateProtocolFile;
|
||||
import com.zfoo.protocol.generate.GenerateProtocolNote;
|
||||
import com.zfoo.protocol.generate.GenerateProtocolPath;
|
||||
import com.zfoo.protocol.registration.IProtocolRegistration;
|
||||
import com.zfoo.protocol.registration.ProtocolAnalysis;
|
||||
import com.zfoo.protocol.registration.ProtocolRegistration;
|
||||
import com.zfoo.protocol.registration.field.IFieldRegistration;
|
||||
@@ -109,9 +108,6 @@ public abstract class GenerateGdUtils {
|
||||
}
|
||||
|
||||
public static void createGdProtocolFile(ProtocolRegistration registration) throws IOException {
|
||||
// 初始化index
|
||||
GenerateProtocolFile.index.set(0);
|
||||
|
||||
var protocolId = registration.protocolId();
|
||||
var registrationConstructor = registration.getConstructor();
|
||||
var protocolClazzName = registrationConstructor.getDeclaringClass().getSimpleName();
|
||||
@@ -225,6 +221,7 @@ public abstract class GenerateGdUtils {
|
||||
}
|
||||
|
||||
private static String writeObject(ProtocolRegistration registration) {
|
||||
GenerateProtocolFile.localVariableId = 0;
|
||||
var fields = registration.getFields();
|
||||
var fieldRegistrations = registration.getFieldRegistrations();
|
||||
var gdBuilder = new StringBuilder();
|
||||
@@ -246,6 +243,7 @@ public abstract class GenerateGdUtils {
|
||||
}
|
||||
|
||||
private static String readObject(ProtocolRegistration registration) {
|
||||
GenerateProtocolFile.localVariableId = 0;
|
||||
var fields = registration.getFields();
|
||||
var fieldRegistrations = registration.getFieldRegistrations();
|
||||
var gdBuilder = new StringBuilder();
|
||||
|
||||
@@ -18,7 +18,6 @@ import com.zfoo.protocol.collection.ArrayUtils;
|
||||
import com.zfoo.protocol.generate.GenerateOperation;
|
||||
import com.zfoo.protocol.generate.GenerateProtocolFile;
|
||||
import com.zfoo.protocol.generate.GenerateProtocolNote;
|
||||
import com.zfoo.protocol.registration.IProtocolRegistration;
|
||||
import com.zfoo.protocol.registration.ProtocolRegistration;
|
||||
import com.zfoo.protocol.registration.field.IFieldRegistration;
|
||||
import com.zfoo.protocol.serializer.CodeLanguage;
|
||||
@@ -106,8 +105,6 @@ public abstract class GenerateGoUtils {
|
||||
}
|
||||
|
||||
public static void createGoProtocolFile(ProtocolRegistration registration) throws IOException {
|
||||
GenerateProtocolFile.index.set(0);
|
||||
|
||||
var protocolId = registration.protocolId();
|
||||
var registrationConstructor = registration.getConstructor();
|
||||
var protocolClazzName = registrationConstructor.getDeclaringClass().getSimpleName();
|
||||
@@ -161,6 +158,7 @@ public abstract class GenerateGoUtils {
|
||||
}
|
||||
|
||||
private static String writeObject(ProtocolRegistration registration) {
|
||||
GenerateProtocolFile.localVariableId = 0;
|
||||
var fields = registration.getFields();
|
||||
var fieldRegistrations = registration.getFieldRegistrations();
|
||||
var goBuilder = new StringBuilder();
|
||||
@@ -182,6 +180,7 @@ public abstract class GenerateGoUtils {
|
||||
}
|
||||
|
||||
private static String readObject(ProtocolRegistration registration) {
|
||||
GenerateProtocolFile.localVariableId = 0;
|
||||
var fields = registration.getFields();
|
||||
var fieldRegistrations = registration.getFieldRegistrations();
|
||||
var goBuilder = new StringBuilder();
|
||||
|
||||
@@ -14,10 +14,8 @@
|
||||
package com.zfoo.protocol.serializer.go;
|
||||
|
||||
import com.zfoo.protocol.generate.GenerateProtocolFile;
|
||||
import com.zfoo.protocol.model.Pair;
|
||||
import com.zfoo.protocol.registration.field.ArrayField;
|
||||
import com.zfoo.protocol.registration.field.IFieldRegistration;
|
||||
import com.zfoo.protocol.registration.field.MapField;
|
||||
import com.zfoo.protocol.serializer.CodeLanguage;
|
||||
import com.zfoo.protocol.serializer.CutDownArraySerializer;
|
||||
import com.zfoo.protocol.util.StringUtils;
|
||||
@@ -57,15 +55,15 @@ public class GoArraySerializer implements IGoSerializer {
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append(StringUtils.format("buffer.WriteInt(len({}))", objectStr)).append(LS);
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
String length = "length" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String length = "length" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("var {} = len({})", length, objectStr)).append(LS);
|
||||
|
||||
String i = "i" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String i = "i" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append(StringUtils.format("for {} := 0; {} < {}; {}++ {", i, i, length, i)).append(LS);
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep + 2);
|
||||
String element = "element" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String element = "element" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("var {} = {}[{}]", element, objectStr, i)).append(LS);
|
||||
|
||||
GenerateGoUtils.goSerializer(arrayField.getArrayElementRegistration().serializer())
|
||||
@@ -87,12 +85,12 @@ public class GoArraySerializer implements IGoSerializer {
|
||||
|
||||
|
||||
var arrayField = (ArrayField) fieldRegistration;
|
||||
var result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
var typeName = fieldType(field, fieldRegistration);
|
||||
|
||||
var i = "index" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var size = "size" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var i = "index" + GenerateProtocolFile.localVariableId++;
|
||||
var size = "size" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("var {} = buffer.ReadInt()", size)).append(LS);
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
package com.zfoo.protocol.serializer.go;
|
||||
|
||||
import com.zfoo.protocol.generate.GenerateProtocolFile;
|
||||
import com.zfoo.protocol.model.Pair;
|
||||
import com.zfoo.protocol.registration.field.IFieldRegistration;
|
||||
import com.zfoo.protocol.util.StringUtils;
|
||||
|
||||
@@ -40,7 +39,7 @@ public class GoBooleanSerializer implements IGoSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("var {} = buffer.ReadBool()", result)).append(LS);
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
package com.zfoo.protocol.serializer.go;
|
||||
|
||||
import com.zfoo.protocol.generate.GenerateProtocolFile;
|
||||
import com.zfoo.protocol.model.Pair;
|
||||
import com.zfoo.protocol.registration.field.IFieldRegistration;
|
||||
import com.zfoo.protocol.util.StringUtils;
|
||||
|
||||
@@ -40,7 +39,7 @@ public class GoByteSerializer implements IGoSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("var {} = buffer.ReadByte()", result)).append(LS);
|
||||
|
||||
@@ -39,7 +39,7 @@ public class GoDoubleSerializer implements IGoSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("var {} = buffer.ReadDouble()", result)).append(LS);
|
||||
|
||||
@@ -39,7 +39,7 @@ public class GoFloatSerializer implements IGoSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("var {} = buffer.ReadFloat()", result)).append(LS);
|
||||
|
||||
@@ -39,7 +39,7 @@ public class GoIntSerializer implements IGoSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("var {} = buffer.ReadInt()", result)).append(LS);
|
||||
|
||||
@@ -56,15 +56,15 @@ public class GoListSerializer implements IGoSerializer {
|
||||
builder.append(StringUtils.format("buffer.WriteInt(len({}))", objectStr)).append(LS);
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
String length = "length" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String length = "length" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("var {} = len({})", length, objectStr)).append(LS);
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
String i = "i" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String i = "i" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("for {} := 0; {} < {}; {}++ {", i, i, length, i)).append(LS);
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep + 2);
|
||||
String element = "element" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String element = "element" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("var {} = {}[{}]", element, objectStr, i)).append(LS);
|
||||
|
||||
GenerateGoUtils.goSerializer(listField.getListElementRegistration().serializer())
|
||||
@@ -85,12 +85,12 @@ public class GoListSerializer implements IGoSerializer {
|
||||
}
|
||||
|
||||
var listField = (ListField) fieldRegistration;
|
||||
var result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
var typeName = fieldType(field, fieldRegistration);
|
||||
|
||||
var i = "index" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var size = "size" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var i = "index" + GenerateProtocolFile.localVariableId++;
|
||||
var size = "size" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
builder.append(StringUtils.format("var {} = buffer.ReadInt()", size)).append(LS);
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
|
||||
@@ -39,7 +39,7 @@ public class GoLongSerializer implements IGoSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("var {} = buffer.ReadLong()", result)).append(LS);
|
||||
|
||||
@@ -62,12 +62,12 @@ public class GoMapSerializer implements IGoSerializer {
|
||||
builder.append(StringUtils.format("buffer.WriteInt(len({}))", objectStr)).append(LS);
|
||||
|
||||
|
||||
String i = "i" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String i = "i" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
|
||||
String key = "keyElement" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String value = "valueElement" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String key = "keyElement" + GenerateProtocolFile.localVariableId++;
|
||||
String value = "valueElement" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("for {}, {} := range {} {", key, value, objectStr)).append(LS);
|
||||
|
||||
GenerateGoUtils.goSerializer(mapField.getMapKeyRegistration().serializer())
|
||||
@@ -90,11 +90,11 @@ public class GoMapSerializer implements IGoSerializer {
|
||||
}
|
||||
|
||||
MapField mapField = (MapField) fieldRegistration;
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
var typeName = fieldType(field, fieldRegistration);
|
||||
|
||||
String size = "size" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String size = "size" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("var {} = buffer.ReadInt()", size)).append(LS);
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
@@ -104,7 +104,7 @@ public class GoMapSerializer implements IGoSerializer {
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("if {} > 0 {", size)).append(LS);
|
||||
|
||||
String i = "index" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String i = "index" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append(StringUtils.format("for {} := 0; {} < {}; {}++ {", i, i, size, i)).append(LS);
|
||||
|
||||
|
||||
+1
-1
@@ -46,7 +46,7 @@ public class GoObjectProtocolSerializer implements IGoSerializer {
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
ObjectProtocolField objectProtocolField = (ObjectProtocolField) fieldRegistration;
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
var protocolSimpleName = EnhanceObjectProtocolSerializer.getProtocolClassSimpleName(objectProtocolField.getProtocolId());
|
||||
|
||||
|
||||
@@ -57,14 +57,14 @@ public class GoSetSerializer implements IGoSerializer {
|
||||
builder.append(StringUtils.format("buffer.WriteInt(len({}))", objectStr)).append(LS);
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
String length = "length" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String length = "length" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("var {} = len({})", length, objectStr)).append(LS);
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
String i = "i" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String i = "i" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("for {} := 0; {} < {}; {}++ {", i, i, length, i)).append(LS);
|
||||
GenerateProtocolFile.addTab(builder, deep + 2);
|
||||
String element = "element" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String element = "element" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("var {} = {}[{}]", element, objectStr, i)).append(LS);
|
||||
|
||||
GenerateGoUtils.goSerializer(setField.getSetElementRegistration().serializer())
|
||||
@@ -85,12 +85,12 @@ public class GoSetSerializer implements IGoSerializer {
|
||||
}
|
||||
|
||||
SetField setField = (SetField) fieldRegistration;
|
||||
var result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
var typeName = fieldType(field, fieldRegistration);
|
||||
|
||||
var i = "index" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var size = "size" + GenerateProtocolFile.index.getAndIncrement();
|
||||
var i = "index" + GenerateProtocolFile.localVariableId++;
|
||||
var size = "size" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
builder.append(StringUtils.format("var {} = buffer.ReadInt()", size)).append(LS);
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
|
||||
@@ -39,7 +39,7 @@ public class GoShortSerializer implements IGoSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("var {} = buffer.ReadShort()", result)).append(LS);
|
||||
|
||||
@@ -39,7 +39,7 @@ public class GoStringSerializer implements IGoSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("var {} = buffer.ReadString()", result)).append(LS);
|
||||
|
||||
+309
@@ -0,0 +1,309 @@
|
||||
/*
|
||||
* Copyright (C) 2020 The zfoo Authors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed
|
||||
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package com.zfoo.protocol.serializer.javascript;
|
||||
|
||||
import com.zfoo.protocol.anno.Compatible;
|
||||
import com.zfoo.protocol.generate.GenerateOperation;
|
||||
import com.zfoo.protocol.generate.GenerateProtocolFile;
|
||||
import com.zfoo.protocol.generate.GenerateProtocolNote;
|
||||
import com.zfoo.protocol.generate.GenerateProtocolPath;
|
||||
import com.zfoo.protocol.registration.ProtocolRegistration;
|
||||
import com.zfoo.protocol.serializer.CodeLanguage;
|
||||
import com.zfoo.protocol.serializer.CodeTemplatePlaceholder;
|
||||
import com.zfoo.protocol.serializer.ICodeGenerate;
|
||||
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 org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static com.zfoo.protocol.util.FileUtils.LS;
|
||||
import static com.zfoo.protocol.util.StringUtils.TAB;
|
||||
|
||||
/**
|
||||
* @author godotg
|
||||
*/
|
||||
public class CodeGenerateJavascript implements ICodeGenerate {
|
||||
private static final Logger logger = LoggerFactory.getLogger(CodeGenerateJavascript.class);
|
||||
// custom configuration
|
||||
public static String protocolOutputRootPath = "zfoojs";
|
||||
private static String protocolOutputPath = StringUtils.EMPTY;
|
||||
|
||||
private static final Map<ISerializer, IJsSerializer> jsSerializerMap = new HashMap<>();
|
||||
|
||||
public static IJsSerializer jsSerializer(ISerializer serializer) {
|
||||
return jsSerializerMap.get(serializer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(GenerateOperation generateOperation) {
|
||||
protocolOutputPath = FileUtils.joinPath(generateOperation.getProtocolPath(), protocolOutputRootPath);
|
||||
FileUtils.deleteFile(new File(protocolOutputPath));
|
||||
|
||||
jsSerializerMap.put(BooleanSerializer.INSTANCE, new JsBooleanSerializer());
|
||||
jsSerializerMap.put(ByteSerializer.INSTANCE, new JsByteSerializer());
|
||||
jsSerializerMap.put(ShortSerializer.INSTANCE, new JsShortSerializer());
|
||||
jsSerializerMap.put(IntSerializer.INSTANCE, new JsIntSerializer());
|
||||
jsSerializerMap.put(LongSerializer.INSTANCE, new JsLongSerializer());
|
||||
jsSerializerMap.put(FloatSerializer.INSTANCE, new JsFloatSerializer());
|
||||
jsSerializerMap.put(DoubleSerializer.INSTANCE, new JsDoubleSerializer());
|
||||
jsSerializerMap.put(StringSerializer.INSTANCE, new JsStringSerializer());
|
||||
jsSerializerMap.put(ArraySerializer.INSTANCE, new JsArraySerializer());
|
||||
jsSerializerMap.put(ListSerializer.INSTANCE, new JsListSerializer());
|
||||
jsSerializerMap.put(SetSerializer.INSTANCE, new JsSetSerializer());
|
||||
jsSerializerMap.put(MapSerializer.INSTANCE, new JsMapSerializer());
|
||||
jsSerializerMap.put(ObjectProtocolSerializer.INSTANCE, new JsObjectProtocolSerializer());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mergerProtocol(List<ProtocolRegistration> registrations) throws IOException {
|
||||
createTemplateFile();
|
||||
|
||||
// 生成ProtocolManager.js文件
|
||||
var protocolManagerTemplate = ClassUtils.getFileFromClassPathToString("javascript/ProtocolManagerTemplate.js");
|
||||
var protocol_imports = new StringBuilder();
|
||||
var protocol_manager_registrations = new StringBuilder();
|
||||
protocol_imports.append("import Protocols from './Protocols.js';").append(LS);
|
||||
for (var registration : registrations) {
|
||||
var protocol_id = registration.protocolId();
|
||||
var protocol_class_name = registration.protocolConstructor().getDeclaringClass().getSimpleName();
|
||||
protocol_manager_registrations.append(StringUtils.format("protocols.set({}, Protocols.{});", protocol_id, protocol_class_name)).append(LS);
|
||||
}
|
||||
var placeholderMap = Map.of(CodeTemplatePlaceholder.protocol_imports, protocol_imports.toString()
|
||||
, CodeTemplatePlaceholder.protocol_manager_registrations, protocol_manager_registrations.toString());
|
||||
var formatProtocolManagerTemplate = CodeTemplatePlaceholder.formatTemplate(protocolManagerTemplate, placeholderMap);
|
||||
var protocolManagerFile = new File(StringUtils.format("{}/{}", protocolOutputPath, "ProtocolManager.js"));
|
||||
FileUtils.writeStringToFile(protocolManagerFile, formatProtocolManagerTemplate, true);
|
||||
logger.info("Generated Javascript protocol manager file:[{}] is in path:[{}]", protocolManagerFile.getName(), protocolManagerFile.getAbsolutePath());
|
||||
|
||||
var protocol_class = new StringBuilder();
|
||||
var protocol_registration = new StringBuilder();
|
||||
for (var registration : registrations) {
|
||||
var protocol_id = registration.protocolId();
|
||||
|
||||
// protocol
|
||||
protocol_class.append(protocol_class(registration)).append(LS);
|
||||
|
||||
// registration
|
||||
protocol_registration.append(protocol_registration(registration)).append(LS);
|
||||
}
|
||||
|
||||
protocol_registration.append(LS);
|
||||
for (var registration : registrations) {
|
||||
var protocol_name = registration.protocolConstructor().getDeclaringClass().getSimpleName();
|
||||
protocol_registration.append(StringUtils.format("Protocols.{} = {}", protocol_name, protocol_name)).append(LS);
|
||||
}
|
||||
|
||||
var protocolTemplate = ClassUtils.getFileFromClassPathToString("javascript/ProtocolsTemplate.js");
|
||||
var formatProtocolTemplate = CodeTemplatePlaceholder.formatTemplate(protocolTemplate, Map.of(
|
||||
CodeTemplatePlaceholder.protocol_class, protocol_class.toString()
|
||||
, CodeTemplatePlaceholder.protocol_registration, protocol_registration.toString()
|
||||
));
|
||||
var outputPath = StringUtils.format("{}/Protocols.js", protocolOutputPath);
|
||||
var file = new File(outputPath);
|
||||
FileUtils.writeStringToFile(file, formatProtocolTemplate, true);
|
||||
logger.info("Generated Javascript protocol file:[{}] is in path:[{}]", file.getName(), file.getAbsolutePath());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void foldProtocol(List<ProtocolRegistration> registrations) throws IOException {
|
||||
createTemplateFile();
|
||||
|
||||
// 生成ProtocolManager.js文件
|
||||
var protocolManagerTemplate = ClassUtils.getFileFromClassPathToString("javascript/ProtocolManagerTemplate.js");
|
||||
var protocol_imports = new StringBuilder();
|
||||
var protocol_manager_registrations = new StringBuilder();
|
||||
for (var registration : registrations) {
|
||||
var protocol_id = registration.protocolId();
|
||||
var protocol_class_name = registration.protocolConstructor().getDeclaringClass().getSimpleName();
|
||||
protocol_imports.append(StringUtils.format("import {} from './{}.js';", protocol_class_name, GenerateProtocolPath.protocolAbsolutePath(registration.protocolId(), CodeLanguage.JavaScript))).append(LS);
|
||||
protocol_manager_registrations.append(StringUtils.format("protocols.set({}, {});", protocol_id, protocol_class_name)).append(LS);
|
||||
}
|
||||
var placeholderMap = Map.of(CodeTemplatePlaceholder.protocol_imports, protocol_imports.toString()
|
||||
, CodeTemplatePlaceholder.protocol_manager_registrations, protocol_manager_registrations.toString());
|
||||
var formatProtocolManagerTemplate = CodeTemplatePlaceholder.formatTemplate(protocolManagerTemplate, placeholderMap);
|
||||
var protocolManagerFile = new File(StringUtils.format("{}/{}", protocolOutputPath, "ProtocolManager.js"));
|
||||
FileUtils.writeStringToFile(protocolManagerFile, formatProtocolManagerTemplate, true);
|
||||
logger.info("Generated Javascript protocol manager file:[{}] is in path:[{}]", protocolManagerFile.getName(), protocolManagerFile.getAbsolutePath());
|
||||
|
||||
|
||||
for (var registration : registrations) {
|
||||
var protocol_id = registration.protocolId();
|
||||
var protocol_name = registration.protocolConstructor().getDeclaringClass().getSimpleName();
|
||||
|
||||
var protocolTemplate = ClassUtils.getFileFromClassPathToString("javascript/ProtocolTemplate.js");
|
||||
var formatProtocolTemplate = CodeTemplatePlaceholder.formatTemplate(protocolTemplate, Map.of(
|
||||
CodeTemplatePlaceholder.protocol_name, protocol_name
|
||||
, CodeTemplatePlaceholder.protocol_class, protocol_class(registration)
|
||||
, CodeTemplatePlaceholder.protocol_registration, protocol_registration(registration)
|
||||
));
|
||||
|
||||
var outputPath = StringUtils.format("{}/{}/{}.js", protocolOutputPath, GenerateProtocolPath.protocolPath(protocol_id), protocol_name);
|
||||
var file = new File(outputPath);
|
||||
FileUtils.writeStringToFile(file, formatProtocolTemplate, true);
|
||||
logger.info("Generated Javascript protocol file:[{}] is in path:[{}]", file.getName(), file.getAbsolutePath());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void defaultProtocol(List<ProtocolRegistration> registrations) throws IOException {
|
||||
createTemplateFile();
|
||||
// 生成ProtocolManager.js文件
|
||||
var protocolManagerTemplate = ClassUtils.getFileFromClassPathToString("javascript/ProtocolManagerTemplate.js");
|
||||
var protocol_imports = new StringBuilder();
|
||||
var protocol_manager_registrations = new StringBuilder();
|
||||
for (var registration : registrations) {
|
||||
var protocol_id = registration.protocolId();
|
||||
var protocol_class_name = registration.protocolConstructor().getDeclaringClass().getSimpleName();
|
||||
protocol_imports.append(StringUtils.format("import {} from './{}.js';", protocol_class_name, protocol_class_name)).append(LS);
|
||||
protocol_manager_registrations.append(StringUtils.format("protocols.set({}, {});", protocol_id, protocol_class_name)).append(LS);
|
||||
}
|
||||
var placeholderMap = Map.of(CodeTemplatePlaceholder.protocol_imports, protocol_imports.toString()
|
||||
, CodeTemplatePlaceholder.protocol_manager_registrations, protocol_manager_registrations.toString());
|
||||
var formatProtocolManagerTemplate = CodeTemplatePlaceholder.formatTemplate(protocolManagerTemplate, placeholderMap);
|
||||
var protocolManagerFile = new File(StringUtils.format("{}/{}", protocolOutputPath, "ProtocolManager.js"));
|
||||
FileUtils.writeStringToFile(protocolManagerFile, formatProtocolManagerTemplate, true);
|
||||
logger.info("Generated Javascript protocol manager file:[{}] is in path:[{}]", protocolManagerFile.getName(), protocolManagerFile.getAbsolutePath());
|
||||
|
||||
|
||||
for (var registration : registrations) {
|
||||
var protocol_id = registration.protocolId();
|
||||
var protocol_name = registration.protocolConstructor().getDeclaringClass().getSimpleName();
|
||||
|
||||
var protocolTemplate = ClassUtils.getFileFromClassPathToString("javascript/ProtocolTemplate.js");
|
||||
var formatProtocolTemplate = CodeTemplatePlaceholder.formatTemplate(protocolTemplate, Map.of(
|
||||
CodeTemplatePlaceholder.protocol_name, protocol_name
|
||||
, CodeTemplatePlaceholder.protocol_class, protocol_class(registration)
|
||||
, CodeTemplatePlaceholder.protocol_registration, protocol_registration(registration)
|
||||
));
|
||||
|
||||
var outputPath = StringUtils.format("{}/{}.js", protocolOutputPath, protocol_name);
|
||||
var file = new File(outputPath);
|
||||
FileUtils.writeStringToFile(file, formatProtocolTemplate, true);
|
||||
logger.info("Generated Javascript protocol file:[{}] is in path:[{}]", file.getName(), file.getAbsolutePath());
|
||||
}
|
||||
}
|
||||
|
||||
private void createTemplateFile() throws IOException {
|
||||
var list = List.of("javascript/buffer/ByteBuffer.js", "javascript/buffer/long.js", "javascript/buffer/longbits.js");
|
||||
for (var fileName : list) {
|
||||
var fileInputStream = ClassUtils.getFileFromClassPath(fileName);
|
||||
var outputPath = StringUtils.format("{}/{}", protocolOutputPath, StringUtils.substringAfterFirst(fileName, "javascript/"));
|
||||
var createFile = new File(outputPath);
|
||||
FileUtils.writeInputStreamToFile(createFile, fileInputStream);
|
||||
}
|
||||
}
|
||||
|
||||
private String protocol_class(ProtocolRegistration registration) {
|
||||
var protocol_id = registration.protocolId();
|
||||
var protocol_class_name = registration.protocolConstructor().getDeclaringClass().getSimpleName();
|
||||
|
||||
var protocolClassTemplate = ClassUtils.getFileFromClassPathToString("javascript/ProtocolClassTemplate.js");
|
||||
var placeholderMap = Map.of(
|
||||
CodeTemplatePlaceholder.protocol_note, GenerateProtocolNote.protocol_note(protocol_id, CodeLanguage.JavaScript)
|
||||
, CodeTemplatePlaceholder.protocol_name, protocol_class_name
|
||||
, CodeTemplatePlaceholder.protocol_field_definition, protocol_field_definition(registration)
|
||||
);
|
||||
return CodeTemplatePlaceholder.formatTemplate(protocolClassTemplate, placeholderMap);
|
||||
}
|
||||
|
||||
private String protocol_registration(ProtocolRegistration registration) {
|
||||
var protocol_id = registration.protocolId();
|
||||
var protocol_class_name = registration.protocolConstructor().getDeclaringClass().getSimpleName();
|
||||
|
||||
var protocolRegistrationTemplate = ClassUtils.getFileFromClassPathToString("javascript/ProtocolRegistrationTemplate.js");
|
||||
var placeholderMap = Map.of(
|
||||
CodeTemplatePlaceholder.protocol_name, protocol_class_name
|
||||
, CodeTemplatePlaceholder.protocol_id, String.valueOf(protocol_id)
|
||||
, CodeTemplatePlaceholder.protocol_write_serialization, protocol_write_serialization(registration)
|
||||
, CodeTemplatePlaceholder.protocol_read_deserialization, protocol_read_deserialization(registration)
|
||||
);
|
||||
return CodeTemplatePlaceholder.formatTemplate(protocolRegistrationTemplate, placeholderMap);
|
||||
}
|
||||
|
||||
|
||||
private String protocol_field_definition(ProtocolRegistration registration) {
|
||||
var protocolId = registration.getId();
|
||||
var fields = registration.getFields();
|
||||
var fieldRegistrations = registration.getFieldRegistrations();
|
||||
// when generate source code fields, use origin fields sort
|
||||
var sequencedFields = ReflectionUtils.notStaticAndTransientFields(registration.getConstructor().getDeclaringClass());
|
||||
var fieldDefinitionBuilder = new StringBuilder();
|
||||
for (var field : sequencedFields) {
|
||||
var fieldRegistration = fieldRegistrations[GenerateProtocolFile.indexOf(fields, field)];
|
||||
var fieldName = field.getName();
|
||||
// 生成注释
|
||||
var fieldNotes = GenerateProtocolNote.fieldNotes(protocolId, fieldName, CodeLanguage.JavaScript);
|
||||
for (var fieldNote : fieldNotes) {
|
||||
fieldDefinitionBuilder.append(fieldNote).append(LS);
|
||||
}
|
||||
var triple = jsSerializer(fieldRegistration.serializer()).field(field, fieldRegistration);
|
||||
fieldDefinitionBuilder.append(StringUtils.format("this.{} = {}; // {}", fieldName, triple.getRight(), triple.getLeft()))
|
||||
.append(LS);
|
||||
|
||||
}
|
||||
return fieldDefinitionBuilder.toString();
|
||||
}
|
||||
|
||||
private String protocol_write_serialization(ProtocolRegistration registration) {
|
||||
GenerateProtocolFile.localVariableId = 0;
|
||||
var fields = registration.getFields();
|
||||
var fieldRegistrations = registration.getFieldRegistrations();
|
||||
var jsBuilder = new StringBuilder();
|
||||
if (registration.isCompatible()) {
|
||||
jsBuilder.append("const beforeWriteIndex = buffer.getWriteOffset();").append(LS);
|
||||
jsBuilder.append(StringUtils.format("buffer.writeInt({});", registration.getPredictionLength())).append(LS);
|
||||
} else {
|
||||
jsBuilder.append("buffer.writeInt(-1);").append(LS);
|
||||
}
|
||||
for (var i = 0; i < fields.length; i++) {
|
||||
var field = fields[i];
|
||||
var fieldRegistration = fieldRegistrations[i];
|
||||
jsSerializer(fieldRegistration.serializer()).writeObject(jsBuilder, "packet." + field.getName(), 0, field, fieldRegistration);
|
||||
}
|
||||
if (registration.isCompatible()) {
|
||||
jsBuilder.append(StringUtils.format("buffer.adjustPadding({}, beforeWriteIndex);", registration.getPredictionLength())).append(LS);
|
||||
}
|
||||
return jsBuilder.toString();
|
||||
}
|
||||
|
||||
private String protocol_read_deserialization(ProtocolRegistration registration) {
|
||||
GenerateProtocolFile.localVariableId = 0;
|
||||
var fields = registration.getFields();
|
||||
var fieldRegistrations = registration.getFieldRegistrations();
|
||||
var jsBuilder = new StringBuilder();
|
||||
for (var i = 0; i < fields.length; i++) {
|
||||
var field = fields[i];
|
||||
var fieldRegistration = fieldRegistrations[i];
|
||||
if (field.isAnnotationPresent(Compatible.class)) {
|
||||
jsBuilder.append("if (buffer.compatibleRead(beforeReadIndex, length)) {").append(LS);
|
||||
var compatibleReadObject = jsSerializer(fieldRegistration.serializer()).readObject(jsBuilder, 1, field, fieldRegistration);
|
||||
jsBuilder.append(TAB).append(StringUtils.format("packet.{} = {};", field.getName(), compatibleReadObject)).append(LS);
|
||||
jsBuilder.append("}").append(LS);
|
||||
continue;
|
||||
}
|
||||
var readObject = jsSerializer(fieldRegistration.serializer()).readObject(jsBuilder, 0, field, fieldRegistration);
|
||||
jsBuilder.append(StringUtils.format("packet.{} = {};", field.getName(), readObject)).append(LS);
|
||||
}
|
||||
return jsBuilder.toString();
|
||||
}
|
||||
}
|
||||
@@ -1,199 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2020 The zfoo Authors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed
|
||||
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package com.zfoo.protocol.serializer.javascript;
|
||||
|
||||
import com.zfoo.protocol.anno.Compatible;
|
||||
import com.zfoo.protocol.generate.GenerateOperation;
|
||||
import com.zfoo.protocol.generate.GenerateProtocolFile;
|
||||
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.serializer.CodeLanguage;
|
||||
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 org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static com.zfoo.protocol.util.FileUtils.LS;
|
||||
import static com.zfoo.protocol.util.StringUtils.TAB;
|
||||
|
||||
/**
|
||||
* @author godotg
|
||||
*/
|
||||
public abstract class GenerateJsUtils {
|
||||
private static final Logger logger = LoggerFactory.getLogger(GenerateJsUtils.class);
|
||||
// custom configuration
|
||||
public static String protocolOutputRootPath = "zfoojs";
|
||||
private static String protocolOutputPath = StringUtils.EMPTY;
|
||||
|
||||
private static Map<ISerializer, IJsSerializer> jsSerializerMap;
|
||||
|
||||
|
||||
public static IJsSerializer jsSerializer(ISerializer serializer) {
|
||||
return jsSerializerMap.get(serializer);
|
||||
}
|
||||
|
||||
public static void init(GenerateOperation generateOperation) {
|
||||
protocolOutputPath = FileUtils.joinPath(generateOperation.getProtocolPath(), protocolOutputRootPath);
|
||||
FileUtils.deleteFile(new File(protocolOutputPath));
|
||||
|
||||
jsSerializerMap = new HashMap<>();
|
||||
jsSerializerMap.put(BooleanSerializer.INSTANCE, new JsBooleanSerializer());
|
||||
jsSerializerMap.put(ByteSerializer.INSTANCE, new JsByteSerializer());
|
||||
jsSerializerMap.put(ShortSerializer.INSTANCE, new JsShortSerializer());
|
||||
jsSerializerMap.put(IntSerializer.INSTANCE, new JsIntSerializer());
|
||||
jsSerializerMap.put(LongSerializer.INSTANCE, new JsLongSerializer());
|
||||
jsSerializerMap.put(FloatSerializer.INSTANCE, new JsFloatSerializer());
|
||||
jsSerializerMap.put(DoubleSerializer.INSTANCE, new JsDoubleSerializer());
|
||||
jsSerializerMap.put(StringSerializer.INSTANCE, new JsStringSerializer());
|
||||
jsSerializerMap.put(ArraySerializer.INSTANCE, new JsArraySerializer());
|
||||
jsSerializerMap.put(ListSerializer.INSTANCE, new JsListSerializer());
|
||||
jsSerializerMap.put(SetSerializer.INSTANCE, new JsSetSerializer());
|
||||
jsSerializerMap.put(MapSerializer.INSTANCE, new JsMapSerializer());
|
||||
jsSerializerMap.put(ObjectProtocolSerializer.INSTANCE, new JsObjectProtocolSerializer());
|
||||
}
|
||||
|
||||
public static void clear() {
|
||||
protocolOutputRootPath = null;
|
||||
protocolOutputPath = null;
|
||||
jsSerializerMap = null;
|
||||
}
|
||||
|
||||
public static void createProtocolManager(List<ProtocolRegistration> protocolList) throws IOException {
|
||||
var list = List.of("javascript/buffer/ByteBuffer.js", "javascript/buffer/long.js", "javascript/buffer/longbits.js");
|
||||
for (var fileName : list) {
|
||||
var fileInputStream = ClassUtils.getFileFromClassPath(fileName);
|
||||
var outputPath = StringUtils.format("{}/{}", protocolOutputPath, StringUtils.substringAfterFirst(fileName, "javascript/"));
|
||||
var createFile = new File(outputPath);
|
||||
FileUtils.writeInputStreamToFile(createFile, fileInputStream);
|
||||
}
|
||||
|
||||
// 生成ProtocolManager.js文件
|
||||
var protocolManagerTemplate = ClassUtils.getFileFromClassPathToString("javascript/ProtocolManagerTemplate.js");
|
||||
|
||||
var importBuilder = new StringBuilder();
|
||||
var initProtocolBuilder = new StringBuilder();
|
||||
for (var protocol : protocolList) {
|
||||
var protocolId = protocol.protocolId();
|
||||
var protocolName = protocol.protocolConstructor().getDeclaringClass().getSimpleName();
|
||||
var path = GenerateProtocolPath.protocolAbsolutePath(protocol.protocolId(), CodeLanguage.JavaScript);
|
||||
importBuilder.append(StringUtils.format("import {} from './{}.js';", protocolName, path)).append(LS);
|
||||
initProtocolBuilder.append(StringUtils.format("protocols.set({}, {});", protocolId, protocolName)).append(LS);
|
||||
}
|
||||
|
||||
protocolManagerTemplate = StringUtils.format(protocolManagerTemplate, importBuilder.toString().trim(), StringUtils.EMPTY_JSON, initProtocolBuilder.toString().trim());
|
||||
var file = new File(StringUtils.format("{}/{}", protocolOutputPath, "ProtocolManager.js"));
|
||||
FileUtils.writeStringToFile(file, protocolManagerTemplate, true);
|
||||
logger.info("Generated JavaScript protocol manager file:[{}] is in path:[{}]", file.getName(), file.getAbsolutePath());
|
||||
}
|
||||
|
||||
public static void createJsProtocolFile(ProtocolRegistration registration) throws IOException {
|
||||
// 初始化index
|
||||
GenerateProtocolFile.index.set(0);
|
||||
|
||||
var protocolId = registration.protocolId();
|
||||
var registrationConstructor = registration.getConstructor();
|
||||
var protocolClazzName = registrationConstructor.getDeclaringClass().getSimpleName();
|
||||
|
||||
var protocolTemplate = ClassUtils.getFileFromClassPathToString("javascript/ProtocolTemplate.js");
|
||||
|
||||
var classNote = GenerateProtocolNote.classNote(protocolId, CodeLanguage.JavaScript, TAB, 0);
|
||||
var fieldDefinition = fieldDefinition(registration);
|
||||
var writeObject = writeObject(registration);
|
||||
var readObject = readObject(registration);
|
||||
|
||||
protocolTemplate = StringUtils.format(protocolTemplate, classNote, protocolClazzName
|
||||
, fieldDefinition.trim(), protocolClazzName, protocolId, protocolClazzName, protocolClazzName, protocolClazzName
|
||||
, writeObject.trim(), protocolClazzName, protocolClazzName, readObject.trim(), protocolClazzName);
|
||||
var outputPath = StringUtils.format("{}/{}/{}.js", protocolOutputPath, GenerateProtocolPath.getProtocolPath(protocolId), protocolClazzName);
|
||||
var file = new File(outputPath);
|
||||
FileUtils.writeStringToFile(file, protocolTemplate, true);
|
||||
logger.info("Generated JavaScript protocol file:[{}] is in path:[{}]", file.getName(), file.getAbsolutePath());
|
||||
}
|
||||
|
||||
private static String fieldDefinition(ProtocolRegistration registration) {
|
||||
var protocolId = registration.getId();
|
||||
var fields = registration.getFields();
|
||||
var fieldRegistrations = registration.getFieldRegistrations();
|
||||
// when generate source code fields, use origin fields sort
|
||||
var sequencedFields = ReflectionUtils.notStaticAndTransientFields(registration.getConstructor().getDeclaringClass());
|
||||
var fieldDefinitionBuilder = new StringBuilder();
|
||||
for (var field : sequencedFields) {
|
||||
var fieldRegistration = fieldRegistrations[GenerateProtocolFile.indexOf(fields, field)];
|
||||
var fieldName = field.getName();
|
||||
// 生成注释
|
||||
var fieldNotes = GenerateProtocolNote.fieldNotes(protocolId, fieldName, CodeLanguage.JavaScript);
|
||||
for (var fieldNote : fieldNotes) {
|
||||
fieldDefinitionBuilder.append(TAB).append(fieldNote).append(LS);
|
||||
}
|
||||
var triple = jsSerializer(fieldRegistration.serializer()).field(field, fieldRegistration);
|
||||
fieldDefinitionBuilder.append(TAB)
|
||||
.append(StringUtils.format("this.{} = {}; // {}", fieldName, triple.getRight(), triple.getLeft()))
|
||||
.append(LS);
|
||||
|
||||
}
|
||||
return fieldDefinitionBuilder.toString();
|
||||
}
|
||||
|
||||
private static String writeObject(ProtocolRegistration registration) {
|
||||
var fields = registration.getFields();
|
||||
var fieldRegistrations = registration.getFieldRegistrations();
|
||||
var jsBuilder = new StringBuilder();
|
||||
if (registration.isCompatible()) {
|
||||
jsBuilder.append("const beforeWriteIndex = buffer.getWriteOffset();").append(LS);
|
||||
jsBuilder.append(TAB).append(StringUtils.format("buffer.writeInt({});", registration.getPredictionLength())).append(LS);
|
||||
} else {
|
||||
jsBuilder.append(TAB).append("buffer.writeInt(-1);").append(LS);
|
||||
}
|
||||
for (var i = 0; i < fields.length; i++) {
|
||||
var field = fields[i];
|
||||
var fieldRegistration = fieldRegistrations[i];
|
||||
jsSerializer(fieldRegistration.serializer()).writeObject(jsBuilder, "packet." + field.getName(), 1, field, fieldRegistration);
|
||||
}
|
||||
if (registration.isCompatible()) {
|
||||
jsBuilder.append(TAB).append(StringUtils.format("buffer.adjustPadding({}, beforeWriteIndex);", registration.getPredictionLength())).append(LS);
|
||||
}
|
||||
return jsBuilder.toString();
|
||||
}
|
||||
|
||||
private static String readObject(ProtocolRegistration registration) {
|
||||
var fields = registration.getFields();
|
||||
var fieldRegistrations = registration.getFieldRegistrations();
|
||||
var jsBuilder = new StringBuilder();
|
||||
for (var i = 0; i < fields.length; i++) {
|
||||
var field = fields[i];
|
||||
var fieldRegistration = fieldRegistrations[i];
|
||||
if (field.isAnnotationPresent(Compatible.class)) {
|
||||
jsBuilder.append(TAB).append("if (buffer.compatibleRead(beforeReadIndex, length)) {").append(LS);
|
||||
var compatibleReadObject = jsSerializer(fieldRegistration.serializer()).readObject(jsBuilder, 2, field, fieldRegistration);
|
||||
jsBuilder.append(TAB + TAB).append(StringUtils.format("packet.{} = {};", field.getName(), compatibleReadObject)).append(LS);
|
||||
jsBuilder.append(TAB).append("}").append(LS);
|
||||
continue;
|
||||
}
|
||||
var readObject = jsSerializer(fieldRegistration.serializer()).readObject(jsBuilder, 1, field, fieldRegistration);
|
||||
jsBuilder.append(TAB).append(StringUtils.format("packet.{} = {};", field.getName(), readObject)).append(LS);
|
||||
}
|
||||
return jsBuilder.toString();
|
||||
}
|
||||
}
|
||||
+6
-6
@@ -54,10 +54,10 @@ public class JsArraySerializer implements IJsSerializer {
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append(StringUtils.format("buffer.writeInt({}.length);", objectStr)).append(LS);
|
||||
|
||||
String element = "element" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String element = "element" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append(StringUtils.format("{}.forEach({} => {", objectStr, element)).append(LS);
|
||||
GenerateJsUtils.jsSerializer(arrayField.getArrayElementRegistration().serializer())
|
||||
CodeGenerateJavascript.jsSerializer(arrayField.getArrayElementRegistration().serializer())
|
||||
.writeObject(builder, element, deep + 2, field, arrayField.getArrayElementRegistration());
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append("});").append(LS);
|
||||
@@ -74,12 +74,12 @@ public class JsArraySerializer implements IJsSerializer {
|
||||
}
|
||||
|
||||
ArrayField arrayField = (ArrayField) fieldRegistration;
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
builder.append(StringUtils.format("const {} = [];", result)).append(LS);
|
||||
|
||||
String i = "index" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String size = "size" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String i = "index" + GenerateProtocolFile.localVariableId++;
|
||||
String size = "size" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("const {} = buffer.readInt();", size)).append(LS);
|
||||
@@ -88,7 +88,7 @@ public class JsArraySerializer implements IJsSerializer {
|
||||
builder.append(StringUtils.format("if ({} > 0) {", size)).append(LS);
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append(StringUtils.format("for (let {} = 0; {} < {}; {}++) {", i, i, size, i)).append(LS);
|
||||
String readObject = GenerateJsUtils.jsSerializer(arrayField.getArrayElementRegistration().serializer())
|
||||
String readObject = CodeGenerateJavascript.jsSerializer(arrayField.getArrayElementRegistration().serializer())
|
||||
.readObject(builder, deep + 2, field, arrayField.getArrayElementRegistration());
|
||||
GenerateProtocolFile.addTab(builder, deep + 2);
|
||||
builder.append(StringUtils.format("{}.push({});", result, readObject)).append(LS);
|
||||
|
||||
+1
-1
@@ -39,7 +39,7 @@ public class JsBooleanSerializer implements IJsSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("const {} = buffer.readBoolean(); ", result)).append(LS);
|
||||
return result;
|
||||
|
||||
+1
-1
@@ -39,7 +39,7 @@ public class JsByteSerializer implements IJsSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("const {} = buffer.readByte();", result)).append(LS);
|
||||
return result;
|
||||
|
||||
+1
-1
@@ -39,7 +39,7 @@ public class JsDoubleSerializer implements IJsSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("const {} = buffer.readDouble();", result)).append(LS);
|
||||
return result;
|
||||
|
||||
+1
-1
@@ -39,7 +39,7 @@ public class JsFloatSerializer implements IJsSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("const {} = buffer.readFloat();", result)).append(LS);
|
||||
return result;
|
||||
|
||||
@@ -39,7 +39,7 @@ public class JsIntSerializer implements IJsSerializer {
|
||||
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("const {} = buffer.readInt();", result)).append(LS);
|
||||
return result;
|
||||
|
||||
+6
-6
@@ -53,10 +53,10 @@ public class JsListSerializer implements IJsSerializer {
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append(StringUtils.format("buffer.writeInt({}.length);", objectStr)).append(LS);
|
||||
|
||||
String element = "element" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String element = "element" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append(StringUtils.format("{}.forEach({} => {", objectStr, element)).append(LS);
|
||||
GenerateJsUtils.jsSerializer(listField.getListElementRegistration().serializer())
|
||||
CodeGenerateJavascript.jsSerializer(listField.getListElementRegistration().serializer())
|
||||
.writeObject(builder, element, deep + 2, field, listField.getListElementRegistration());
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append("});").append(LS);
|
||||
@@ -73,21 +73,21 @@ public class JsListSerializer implements IJsSerializer {
|
||||
}
|
||||
|
||||
ListField listField = (ListField) fieldRegistration;
|
||||
String result = "result" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String result = "result" + GenerateProtocolFile.localVariableId++;
|
||||
|
||||
builder.append(StringUtils.format("const {} = [];", result)).append(LS);
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
String size = "size" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String size = "size" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("const {} = buffer.readInt();", size)).append(LS);
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
builder.append(StringUtils.format("if ({} > 0) {", size)).append(LS);
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
String i = "index" + GenerateProtocolFile.index.getAndIncrement();
|
||||
String i = "index" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("for (let {} = 0; {} < {}; {}++) {", i, i, size, i)).append(LS);
|
||||
String readObject = GenerateJsUtils.jsSerializer(listField.getListElementRegistration().serializer())
|
||||
String readObject = CodeGenerateJavascript.jsSerializer(listField.getListElementRegistration().serializer())
|
||||
.readObject(builder, deep + 2, field, listField.getListElementRegistration());
|
||||
GenerateProtocolFile.addTab(builder, deep + 2);
|
||||
builder.append(StringUtils.format("{}.push({});", result, readObject)).append(LS);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user