mirror of
https://github.com/tiennm99/zfoo.git
synced 2026-08-14 00:23:38 +00:00
ref[EcmaScript]: refactor generate EcmaScript protocol
This commit is contained in:
@@ -19,7 +19,6 @@ import com.zfoo.protocol.registration.IProtocolRegistration;
|
||||
import com.zfoo.protocol.registration.ProtocolAnalysis;
|
||||
import com.zfoo.protocol.registration.ProtocolRegistration;
|
||||
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.python.GeneratePyUtils;
|
||||
@@ -117,7 +116,6 @@ public abstract class GenerateProtocolFile {
|
||||
// 计算协议生成的路径
|
||||
GenerateProtocolPath.initProtocolPath(generateProtocols);
|
||||
|
||||
// 生成C++协议
|
||||
var generateLanguages = generateOperation.getGenerateLanguages();
|
||||
|
||||
// 生成Golang协议
|
||||
@@ -129,15 +127,6 @@ public abstract class GenerateProtocolFile {
|
||||
}
|
||||
}
|
||||
|
||||
// 生成Javascript协议
|
||||
if (generateLanguages.contains(CodeLanguage.ES)) {
|
||||
GenerateEsUtils.init(generateOperation);
|
||||
for (var protocolRegistration : generateProtocols) {
|
||||
GenerateEsUtils.createEsProtocolFile((ProtocolRegistration) protocolRegistration);
|
||||
}
|
||||
GenerateEsUtils.createProtocolManager(generateProtocols);
|
||||
}
|
||||
|
||||
// 生成TypeScript协议
|
||||
if (generateLanguages.contains(CodeLanguage.TypeScript)) {
|
||||
GenerateTsUtils.init(generateOperation);
|
||||
|
||||
@@ -16,7 +16,6 @@ package com.zfoo.protocol.generate;
|
||||
import com.zfoo.protocol.anno.Note;
|
||||
import com.zfoo.protocol.exception.RunException;
|
||||
import com.zfoo.protocol.model.Pair;
|
||||
import com.zfoo.protocol.registration.IProtocolRegistration;
|
||||
import com.zfoo.protocol.registration.ProtocolRegistration;
|
||||
import com.zfoo.protocol.serializer.CodeLanguage;
|
||||
import com.zfoo.protocol.util.AssertionUtils;
|
||||
@@ -100,7 +99,7 @@ public abstract class GenerateProtocolNote {
|
||||
case Cpp:
|
||||
case Go:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
case CSharp:
|
||||
case Protobuf:
|
||||
|
||||
@@ -15,7 +15,6 @@ package com.zfoo.protocol.generate;
|
||||
import com.zfoo.protocol.collection.CollectionUtils;
|
||||
import com.zfoo.protocol.collection.tree.GeneralTree;
|
||||
import com.zfoo.protocol.collection.tree.TreeNode;
|
||||
import com.zfoo.protocol.registration.IProtocolRegistration;
|
||||
import com.zfoo.protocol.registration.ProtocolRegistration;
|
||||
import com.zfoo.protocol.serializer.CodeLanguage;
|
||||
import com.zfoo.protocol.serializer.enhance.EnhanceObjectProtocolSerializer;
|
||||
@@ -60,7 +59,7 @@ public abstract class GenerateProtocolPath {
|
||||
break;
|
||||
case JavaScript:
|
||||
break;
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
break;
|
||||
case TypeScript:
|
||||
break;
|
||||
|
||||
@@ -14,7 +14,8 @@ 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.ecmascript.CodeGenerateEcmaScript;
|
||||
import com.zfoo.protocol.serializer.javascript.CodeGenerateJavaScript;
|
||||
import com.zfoo.protocol.serializer.lua.CodeGenerateLua;
|
||||
|
||||
/**
|
||||
@@ -31,9 +32,9 @@ public enum CodeLanguage {
|
||||
|
||||
Go(1 << 2, null),
|
||||
|
||||
JavaScript(1 << 3, CodeGenerateJavascript.class),
|
||||
JavaScript(1 << 3, CodeGenerateJavaScript.class),
|
||||
|
||||
ES(1 << 4, null),
|
||||
EcmaScript(1 << 4, CodeGenerateEcmaScript.class),
|
||||
|
||||
TypeScript(1 << 5, null),
|
||||
|
||||
|
||||
@@ -65,7 +65,7 @@ public class CutDownArraySerializer implements ICutDownSerializer {
|
||||
break;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeBooleanArray({});", objectStr)).append(LS);
|
||||
break;
|
||||
@@ -93,7 +93,7 @@ public class CutDownArraySerializer implements ICutDownSerializer {
|
||||
break;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeBooleanArray({});", objectStr)).append(LS);
|
||||
break;
|
||||
@@ -121,7 +121,7 @@ public class CutDownArraySerializer implements ICutDownSerializer {
|
||||
break;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeByteArray({});", objectStr)).append(LS);
|
||||
break;
|
||||
@@ -149,7 +149,7 @@ public class CutDownArraySerializer implements ICutDownSerializer {
|
||||
break;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeByteArray({});", objectStr)).append(LS);
|
||||
break;
|
||||
@@ -177,7 +177,7 @@ public class CutDownArraySerializer implements ICutDownSerializer {
|
||||
break;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeShortArray({});", objectStr)).append(LS);
|
||||
break;
|
||||
@@ -205,7 +205,7 @@ public class CutDownArraySerializer implements ICutDownSerializer {
|
||||
break;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeShortArray({});", objectStr)).append(LS);
|
||||
break;
|
||||
@@ -233,7 +233,7 @@ public class CutDownArraySerializer implements ICutDownSerializer {
|
||||
break;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeIntArray({});", objectStr)).append(LS);
|
||||
break;
|
||||
@@ -261,7 +261,7 @@ public class CutDownArraySerializer implements ICutDownSerializer {
|
||||
break;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeIntArray({});", objectStr)).append(LS);
|
||||
break;
|
||||
@@ -289,7 +289,7 @@ public class CutDownArraySerializer implements ICutDownSerializer {
|
||||
break;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeLongArray({});", objectStr)).append(LS);
|
||||
break;
|
||||
@@ -317,7 +317,7 @@ public class CutDownArraySerializer implements ICutDownSerializer {
|
||||
break;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeLongArray({});", objectStr)).append(LS);
|
||||
break;
|
||||
@@ -345,7 +345,7 @@ public class CutDownArraySerializer implements ICutDownSerializer {
|
||||
break;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeFloatArray({});", objectStr)).append(LS);
|
||||
break;
|
||||
@@ -373,7 +373,7 @@ public class CutDownArraySerializer implements ICutDownSerializer {
|
||||
break;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeFloatArray({});", objectStr)).append(LS);
|
||||
break;
|
||||
@@ -401,7 +401,7 @@ public class CutDownArraySerializer implements ICutDownSerializer {
|
||||
break;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeDoubleArray({});", objectStr)).append(LS);
|
||||
break;
|
||||
@@ -429,7 +429,7 @@ public class CutDownArraySerializer implements ICutDownSerializer {
|
||||
break;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeDoubleArray({});", objectStr)).append(LS);
|
||||
break;
|
||||
@@ -457,7 +457,7 @@ public class CutDownArraySerializer implements ICutDownSerializer {
|
||||
break;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeStringArray({});", objectStr)).append(LS);
|
||||
break;
|
||||
@@ -486,7 +486,7 @@ public class CutDownArraySerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("buffer.writePacketArray<{}>({}, {});", EnhanceObjectProtocolSerializer.getProtocolClassSimpleName(protocolId), objectStr, protocolId)).append(LS);
|
||||
break;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writePacketArray({}, {});", objectStr, protocolId)).append(LS);
|
||||
break;
|
||||
@@ -536,7 +536,7 @@ public class CutDownArraySerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readBooleanArray();", array)).append(LS);
|
||||
break;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readBooleanArray();", array)).append(LS);
|
||||
break;
|
||||
@@ -568,7 +568,7 @@ public class CutDownArraySerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readBooleanArray();", array)).append(LS);
|
||||
break;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readBooleanArray();", array)).append(LS);
|
||||
break;
|
||||
@@ -600,7 +600,7 @@ public class CutDownArraySerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readByteArray();", array)).append(LS);
|
||||
break;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readByteArray();", array)).append(LS);
|
||||
break;
|
||||
@@ -632,7 +632,7 @@ public class CutDownArraySerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readByteArray();", array)).append(LS);
|
||||
break;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readByteArray();", array)).append(LS);
|
||||
break;
|
||||
@@ -664,7 +664,7 @@ public class CutDownArraySerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readShortArray();", array)).append(LS);
|
||||
break;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readShortArray();", array)).append(LS);
|
||||
break;
|
||||
@@ -696,7 +696,7 @@ public class CutDownArraySerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readShortArray();", array)).append(LS);
|
||||
break;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readShortArray();", array)).append(LS);
|
||||
break;
|
||||
@@ -728,7 +728,7 @@ public class CutDownArraySerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readIntArray();", array)).append(LS);
|
||||
break;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readIntArray();", array)).append(LS);
|
||||
break;
|
||||
@@ -760,7 +760,7 @@ public class CutDownArraySerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readIntArray();", array)).append(LS);
|
||||
break;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readIntArray();", array)).append(LS);
|
||||
break;
|
||||
@@ -792,7 +792,7 @@ public class CutDownArraySerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readLongArray();", array)).append(LS);
|
||||
break;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readLongArray();", array)).append(LS);
|
||||
break;
|
||||
@@ -824,7 +824,7 @@ public class CutDownArraySerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readLongArray();", array)).append(LS);
|
||||
break;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readLongArray();", array)).append(LS);
|
||||
break;
|
||||
@@ -856,7 +856,7 @@ public class CutDownArraySerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readFloatArray();", array)).append(LS);
|
||||
break;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readFloatArray();", array)).append(LS);
|
||||
break;
|
||||
@@ -888,7 +888,7 @@ public class CutDownArraySerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readFloatArray();", array)).append(LS);
|
||||
break;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readFloatArray();", array)).append(LS);
|
||||
break;
|
||||
@@ -920,7 +920,7 @@ public class CutDownArraySerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readDoubleArray();", array)).append(LS);
|
||||
break;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readDoubleArray();", array)).append(LS);
|
||||
break;
|
||||
@@ -952,7 +952,7 @@ public class CutDownArraySerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readDoubleArray();", array)).append(LS);
|
||||
break;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readDoubleArray();", array)).append(LS);
|
||||
break;
|
||||
@@ -984,7 +984,7 @@ public class CutDownArraySerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readStringArray();", array)).append(LS);
|
||||
break;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readStringArray();", array)).append(LS);
|
||||
break;
|
||||
@@ -1013,7 +1013,7 @@ public class CutDownArraySerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readPacketArray<{}>({});", array, EnhanceObjectProtocolSerializer.getProtocolClassSimpleName(protocolId), protocolId)).append(LS);
|
||||
break;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readPacketArray({});", array, protocolId)).append(LS);
|
||||
break;
|
||||
|
||||
@@ -64,7 +64,7 @@ public class CutDownListSerializer implements ICutDownSerializer {
|
||||
break;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeBooleanList({});", objectStr)).append(LS);
|
||||
break;
|
||||
@@ -92,7 +92,7 @@ public class CutDownListSerializer implements ICutDownSerializer {
|
||||
break;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeByteList({});", objectStr)).append(LS);
|
||||
break;
|
||||
@@ -120,7 +120,7 @@ public class CutDownListSerializer implements ICutDownSerializer {
|
||||
break;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeShortList({});", objectStr)).append(LS);
|
||||
break;
|
||||
@@ -148,7 +148,7 @@ public class CutDownListSerializer implements ICutDownSerializer {
|
||||
break;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeIntList({});", objectStr)).append(LS);
|
||||
break;
|
||||
@@ -176,7 +176,7 @@ public class CutDownListSerializer implements ICutDownSerializer {
|
||||
break;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeLongList({});", objectStr)).append(LS);
|
||||
break;
|
||||
@@ -205,7 +205,7 @@ public class CutDownListSerializer implements ICutDownSerializer {
|
||||
break;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeFloatList({});", objectStr)).append(LS);
|
||||
break;
|
||||
@@ -234,7 +234,7 @@ public class CutDownListSerializer implements ICutDownSerializer {
|
||||
break;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeDoubleList({});", objectStr)).append(LS);
|
||||
break;
|
||||
@@ -263,7 +263,7 @@ public class CutDownListSerializer implements ICutDownSerializer {
|
||||
break;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeStringList({});", objectStr)).append(LS);
|
||||
break;
|
||||
@@ -291,7 +291,7 @@ public class CutDownListSerializer implements ICutDownSerializer {
|
||||
break;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writePacketList({}, {});", objectStr, protocolId)).append(LS);
|
||||
break;
|
||||
@@ -340,7 +340,7 @@ public class CutDownListSerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readBooleanList();", list)).append(LS);
|
||||
break;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readBooleanList();", list)).append(LS);
|
||||
break;
|
||||
@@ -372,7 +372,7 @@ public class CutDownListSerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readByteList();", list)).append(LS);
|
||||
break;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readByteList();", list)).append(LS);
|
||||
break;
|
||||
@@ -404,7 +404,7 @@ public class CutDownListSerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readShortList();", list)).append(LS);
|
||||
break;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readShortList();", list)).append(LS);
|
||||
break;
|
||||
@@ -436,7 +436,7 @@ public class CutDownListSerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readIntList();", list)).append(LS);
|
||||
break;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readIntList();", list)).append(LS);
|
||||
break;
|
||||
@@ -468,7 +468,7 @@ public class CutDownListSerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readLongList();", list)).append(LS);
|
||||
break;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readLongList();", list)).append(LS);
|
||||
break;
|
||||
@@ -500,7 +500,7 @@ public class CutDownListSerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readFloatList();", list)).append(LS);
|
||||
break;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readFloatList();", list)).append(LS);
|
||||
break;
|
||||
@@ -532,7 +532,7 @@ public class CutDownListSerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readDoubleList();", list)).append(LS);
|
||||
break;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readDoubleList();", list)).append(LS);
|
||||
break;
|
||||
@@ -564,7 +564,7 @@ public class CutDownListSerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readStringList();", list)).append(LS);
|
||||
break;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readStringList();", list)).append(LS);
|
||||
break;
|
||||
@@ -595,7 +595,7 @@ public class CutDownListSerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readPacketList<{}>({});", list, EnhanceObjectProtocolSerializer.getProtocolClassSimpleName(protocolId), protocolId)).append(LS);
|
||||
break;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readPacketList({});", list, protocolId)).append(LS);
|
||||
break;
|
||||
|
||||
@@ -71,7 +71,7 @@ public class CutDownMapSerializer implements ICutDownSerializer {
|
||||
return true;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeIntIntMap({});", objectStr)).append(LS);
|
||||
return true;
|
||||
@@ -96,7 +96,7 @@ public class CutDownMapSerializer implements ICutDownSerializer {
|
||||
return true;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeIntLongMap({});", objectStr)).append(LS);
|
||||
return true;
|
||||
@@ -121,7 +121,7 @@ public class CutDownMapSerializer implements ICutDownSerializer {
|
||||
return true;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeIntStringMap({});", objectStr)).append(LS);
|
||||
return true;
|
||||
@@ -143,7 +143,7 @@ public class CutDownMapSerializer implements ICutDownSerializer {
|
||||
return true;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeIntPacketMap({}, {});", objectStr, ((ObjectProtocolField) valueRegistration).getProtocolId())).append(LS);
|
||||
return true;
|
||||
@@ -173,7 +173,7 @@ public class CutDownMapSerializer implements ICutDownSerializer {
|
||||
return true;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeLongIntMap({});", objectStr)).append(LS);
|
||||
return true;
|
||||
@@ -198,7 +198,7 @@ public class CutDownMapSerializer implements ICutDownSerializer {
|
||||
return true;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeLongLongMap({});", objectStr)).append(LS);
|
||||
return true;
|
||||
@@ -223,7 +223,7 @@ public class CutDownMapSerializer implements ICutDownSerializer {
|
||||
return true;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeLongStringMap({});", objectStr)).append(LS);
|
||||
return true;
|
||||
@@ -245,7 +245,7 @@ public class CutDownMapSerializer implements ICutDownSerializer {
|
||||
return true;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeLongPacketMap({}, {});", objectStr, ((ObjectProtocolField) valueRegistration).getProtocolId())).append(LS);
|
||||
return true;
|
||||
@@ -275,7 +275,7 @@ public class CutDownMapSerializer implements ICutDownSerializer {
|
||||
return true;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeStringIntMap({});", objectStr)).append(LS);
|
||||
return true;
|
||||
@@ -300,7 +300,7 @@ public class CutDownMapSerializer implements ICutDownSerializer {
|
||||
return true;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeStringLongMap({});", objectStr)).append(LS);
|
||||
return true;
|
||||
@@ -325,7 +325,7 @@ public class CutDownMapSerializer implements ICutDownSerializer {
|
||||
return true;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeStringStringMap({});", objectStr)).append(LS);
|
||||
return true;
|
||||
@@ -347,7 +347,7 @@ public class CutDownMapSerializer implements ICutDownSerializer {
|
||||
return true;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeStringPacketMap({}, {});", objectStr, ((ObjectProtocolField) valueRegistration).getProtocolId())).append(LS);
|
||||
return true;
|
||||
@@ -397,7 +397,7 @@ public class CutDownMapSerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readIntIntMap();", map)).append(LS);
|
||||
return map;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readIntIntMap();", map)).append(LS);
|
||||
return map;
|
||||
@@ -426,7 +426,7 @@ public class CutDownMapSerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readIntLongMap();", map)).append(LS);
|
||||
return map;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readIntLongMap();", map)).append(LS);
|
||||
return map;
|
||||
@@ -455,7 +455,7 @@ public class CutDownMapSerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readIntStringMap();", map)).append(LS);
|
||||
return map;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readIntStringMap();", map)).append(LS);
|
||||
return map;
|
||||
@@ -482,7 +482,7 @@ public class CutDownMapSerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readIntPacketMap<{}>({});", map, EnhanceObjectProtocolSerializer.getProtocolClassSimpleName(protocolId), protocolId)).append(LS);
|
||||
return map;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readIntPacketMap({});", map, protocolId)).append(LS);
|
||||
return map;
|
||||
@@ -515,7 +515,7 @@ public class CutDownMapSerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readLongIntMap();", map)).append(LS);
|
||||
return map;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readLongIntMap();", map)).append(LS);
|
||||
return map;
|
||||
@@ -544,7 +544,7 @@ public class CutDownMapSerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readLongLongMap();", map)).append(LS);
|
||||
return map;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readLongLongMap();", map)).append(LS);
|
||||
return map;
|
||||
@@ -573,7 +573,7 @@ public class CutDownMapSerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readLongStringMap();", map)).append(LS);
|
||||
return map;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readLongStringMap();", map)).append(LS);
|
||||
return map;
|
||||
@@ -600,7 +600,7 @@ public class CutDownMapSerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readLongPacketMap<{}>({});", map, EnhanceObjectProtocolSerializer.getProtocolClassSimpleName(protocolId), protocolId)).append(LS);
|
||||
return map;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readLongPacketMap({});", map, protocolId)).append(LS);
|
||||
return map;
|
||||
@@ -634,7 +634,7 @@ public class CutDownMapSerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readStringIntMap();", map)).append(LS);
|
||||
return map;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readStringIntMap();", map)).append(LS);
|
||||
return map;
|
||||
@@ -663,7 +663,7 @@ public class CutDownMapSerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readStringLongMap();", map)).append(LS);
|
||||
return map;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readStringLongMap();", map)).append(LS);
|
||||
return map;
|
||||
@@ -692,7 +692,7 @@ public class CutDownMapSerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readStringStringMap();", map)).append(LS);
|
||||
return map;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readStringStringMap();", map)).append(LS);
|
||||
return map;
|
||||
@@ -719,7 +719,7 @@ public class CutDownMapSerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readStringPacketMap<{}>({});", map, EnhanceObjectProtocolSerializer.getProtocolClassSimpleName(protocolId), protocolId)).append(LS);
|
||||
return map;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readStringPacketMap({});", map, protocolId)).append(LS);
|
||||
return map;
|
||||
|
||||
@@ -67,7 +67,7 @@ public class CutDownSetSerializer implements ICutDownSerializer {
|
||||
break;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeBooleanSet({});", objectStr)).append(LS);
|
||||
break;
|
||||
@@ -97,7 +97,7 @@ public class CutDownSetSerializer implements ICutDownSerializer {
|
||||
break;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeByteSet({});", objectStr)).append(LS);
|
||||
break;
|
||||
@@ -127,7 +127,7 @@ public class CutDownSetSerializer implements ICutDownSerializer {
|
||||
break;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeShortSet({});", objectStr)).append(LS);
|
||||
break;
|
||||
@@ -157,7 +157,7 @@ public class CutDownSetSerializer implements ICutDownSerializer {
|
||||
break;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeIntSet({});", objectStr)).append(LS);
|
||||
break;
|
||||
@@ -187,7 +187,7 @@ public class CutDownSetSerializer implements ICutDownSerializer {
|
||||
break;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeLongSet({});", objectStr)).append(LS);
|
||||
break;
|
||||
@@ -217,7 +217,7 @@ public class CutDownSetSerializer implements ICutDownSerializer {
|
||||
break;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeFloatSet({});", objectStr)).append(LS);
|
||||
break;
|
||||
@@ -247,7 +247,7 @@ public class CutDownSetSerializer implements ICutDownSerializer {
|
||||
break;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeDoubleSet({});", objectStr)).append(LS);
|
||||
break;
|
||||
@@ -277,7 +277,7 @@ public class CutDownSetSerializer implements ICutDownSerializer {
|
||||
break;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writeStringSet({});", objectStr)).append(LS);
|
||||
break;
|
||||
@@ -307,7 +307,7 @@ public class CutDownSetSerializer implements ICutDownSerializer {
|
||||
break;
|
||||
case Cpp:
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("buffer.writePacketSet({}, {});", objectStr, protocolId)).append(LS);
|
||||
break;
|
||||
@@ -356,7 +356,7 @@ public class CutDownSetSerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("var {} = buffer.ReadBooleanArray()", set)).append(LS);
|
||||
break;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readBooleanSet();", set)).append(LS);
|
||||
break;
|
||||
@@ -388,7 +388,7 @@ public class CutDownSetSerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readByteSet();", set)).append(LS);
|
||||
break;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readByteSet();", set)).append(LS);
|
||||
break;
|
||||
@@ -420,7 +420,7 @@ public class CutDownSetSerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readShortSet();", set)).append(LS);
|
||||
break;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readShortSet();", set)).append(LS);
|
||||
break;
|
||||
@@ -452,7 +452,7 @@ public class CutDownSetSerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readIntSet();", set)).append(LS);
|
||||
break;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readIntSet();", set)).append(LS);
|
||||
break;
|
||||
@@ -484,7 +484,7 @@ public class CutDownSetSerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readLongSet();", set)).append(LS);
|
||||
break;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readLongSet();", set)).append(LS);
|
||||
break;
|
||||
@@ -516,7 +516,7 @@ public class CutDownSetSerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readFloatSet();", set)).append(LS);
|
||||
break;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readFloatSet();", set)).append(LS);
|
||||
break;
|
||||
@@ -548,7 +548,7 @@ public class CutDownSetSerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readDoubleSet();", set)).append(LS);
|
||||
break;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readDoubleSet();", set)).append(LS);
|
||||
break;
|
||||
@@ -580,7 +580,7 @@ public class CutDownSetSerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readStringSet();", set)).append(LS);
|
||||
break;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readStringSet();", set)).append(LS);
|
||||
break;
|
||||
@@ -611,7 +611,7 @@ public class CutDownSetSerializer implements ICutDownSerializer {
|
||||
builder.append(StringUtils.format("auto {} = buffer.readPacketSet<{}>({});", set, EnhanceObjectProtocolSerializer.getProtocolClassSimpleName(protocolId), protocolId)).append(LS);
|
||||
break;
|
||||
case JavaScript:
|
||||
case ES:
|
||||
case EcmaScript:
|
||||
case TypeScript:
|
||||
builder.append(StringUtils.format("const {} = buffer.readPacketSet({});", set, protocolId)).append(LS);
|
||||
break;
|
||||
|
||||
+293
@@ -0,0 +1,293 @@
|
||||
/*
|
||||
* 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.ecmascript;
|
||||
|
||||
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 CodeGenerateEcmaScript implements ICodeGenerate {
|
||||
private static final Logger logger = LoggerFactory.getLogger(CodeGenerateEcmaScript.class);
|
||||
// custom configuration
|
||||
public static String protocolOutputRootPath = "zfooes";
|
||||
private static String protocolOutputPath = StringUtils.EMPTY;
|
||||
|
||||
private static final Map<ISerializer, IEsSerializer> esSerializerMap = new HashMap<>();
|
||||
|
||||
|
||||
public static IEsSerializer esSerializer(ISerializer serializer) {
|
||||
return esSerializerMap.get(serializer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(GenerateOperation generateOperation) {
|
||||
protocolOutputPath = FileUtils.joinPath(generateOperation.getProtocolPath(), protocolOutputRootPath);
|
||||
FileUtils.deleteFile(new File(protocolOutputPath));
|
||||
|
||||
esSerializerMap.put(BooleanSerializer.INSTANCE, new EsBooleanSerializer());
|
||||
esSerializerMap.put(ByteSerializer.INSTANCE, new EsByteSerializer());
|
||||
esSerializerMap.put(ShortSerializer.INSTANCE, new EsShortSerializer());
|
||||
esSerializerMap.put(IntSerializer.INSTANCE, new EsIntSerializer());
|
||||
esSerializerMap.put(LongSerializer.INSTANCE, new EsLongSerializer());
|
||||
esSerializerMap.put(FloatSerializer.INSTANCE, new EsFloatSerializer());
|
||||
esSerializerMap.put(DoubleSerializer.INSTANCE, new EsDoubleSerializer());
|
||||
esSerializerMap.put(StringSerializer.INSTANCE, new EsStringSerializer());
|
||||
esSerializerMap.put(ArraySerializer.INSTANCE, new EsArraySerializer());
|
||||
esSerializerMap.put(ListSerializer.INSTANCE, new EsListSerializer());
|
||||
esSerializerMap.put(SetSerializer.INSTANCE, new EsSetSerializer());
|
||||
esSerializerMap.put(MapSerializer.INSTANCE, new EsMapSerializer());
|
||||
esSerializerMap.put(ObjectProtocolSerializer.INSTANCE, new EsObjectProtocolSerializer());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mergerProtocol(List<ProtocolRegistration> registrations) throws IOException {
|
||||
createTemplateFile();
|
||||
|
||||
var protocolManagerTemplate = ClassUtils.getFileFromClassPathToString("ecmascript/ProtocolManagerTemplate.mjs");
|
||||
var protocol_imports = new StringBuilder();
|
||||
var protocol_manager_registrations = new StringBuilder();
|
||||
protocol_imports.append("import Protocols from './Protocols.mjs';").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.mjs"));
|
||||
FileUtils.writeStringToFile(protocolManagerFile, formatProtocolManagerTemplate, true);
|
||||
logger.info("Generated ES 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(formatProtocolClassTemplate(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("ecmascript/ProtocolsTemplate.mjs");
|
||||
var formatProtocolTemplate = CodeTemplatePlaceholder.formatTemplate(protocolTemplate, Map.of(
|
||||
CodeTemplatePlaceholder.protocol_class, protocol_class.toString()
|
||||
, CodeTemplatePlaceholder.protocol_registration, protocol_registration.toString()
|
||||
));
|
||||
var outputPath = StringUtils.format("{}/Protocols.mjs", protocolOutputPath);
|
||||
var file = new File(outputPath);
|
||||
FileUtils.writeStringToFile(file, formatProtocolTemplate, true);
|
||||
logger.info("Generated ES protocol file:[{}] is in path:[{}]", file.getName(), file.getAbsolutePath());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void foldProtocol(List<ProtocolRegistration> registrations) throws IOException {
|
||||
createTemplateFile();
|
||||
|
||||
// 生成ProtocolManager.mjs文件
|
||||
var protocolManagerTemplate = ClassUtils.getFileFromClassPathToString("ecmascript/ProtocolManagerTemplate.mjs");
|
||||
var protocol_imports = new StringBuilder();
|
||||
var protocol_manager_registrations = new StringBuilder();
|
||||
for (var protocol : registrations) {
|
||||
var protocol_id = protocol.protocolId();
|
||||
var protocol_class_name = protocol.protocolConstructor().getDeclaringClass().getSimpleName();
|
||||
protocol_imports.append(StringUtils.format("import {} from './{}.mjs';", protocol_class_name, GenerateProtocolPath.protocolAbsolutePath(protocol.protocolId(), CodeLanguage.EcmaScript))).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.mjs"));
|
||||
FileUtils.writeStringToFile(protocolManagerFile, formatProtocolManagerTemplate, true);
|
||||
logger.info("Generated ES 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 formatProtocolTemplate = formatProtocolTemplate(registration);
|
||||
var outputPath = StringUtils.format("{}/{}/{}.mjs", protocolOutputPath, GenerateProtocolPath.getProtocolPath(protocol_id), protocol_name);
|
||||
var file = new File(outputPath);
|
||||
FileUtils.writeStringToFile(file, formatProtocolTemplate, true);
|
||||
logger.info("Generated ES protocol file:[{}] is in path:[{}]", file.getName(), file.getAbsolutePath());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void defaultProtocol(List<ProtocolRegistration> registrations) throws IOException {
|
||||
createTemplateFile();
|
||||
|
||||
// 生成ProtocolManager.mjs文件
|
||||
var protocolManagerTemplate = ClassUtils.getFileFromClassPathToString("ecmascript/ProtocolManagerTemplate.mjs");
|
||||
var protocol_imports = new StringBuilder();
|
||||
var protocol_manager_registrations = new StringBuilder();
|
||||
for (var protocol : registrations) {
|
||||
var protocol_id = protocol.protocolId();
|
||||
var protocol_class_name = protocol.protocolConstructor().getDeclaringClass().getSimpleName();
|
||||
protocol_imports.append(StringUtils.format("import {} from './{}.mjs';", 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.mjs"));
|
||||
FileUtils.writeStringToFile(protocolManagerFile, formatProtocolManagerTemplate, true);
|
||||
logger.info("Generated ES 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 formatProtocolTemplate = formatProtocolTemplate(registration);
|
||||
var outputPath = StringUtils.format("{}/{}.mjs", protocolOutputPath, protocol_name, protocol_name);
|
||||
var file = new File(outputPath);
|
||||
FileUtils.writeStringToFile(file, formatProtocolTemplate, true);
|
||||
logger.info("Generated ES protocol file:[{}] is in path:[{}]", file.getName(), file.getAbsolutePath());
|
||||
}
|
||||
}
|
||||
|
||||
private void createTemplateFile() throws IOException {
|
||||
var list = List.of("ecmascript/buffer/ByteBuffer.mjs", "ecmascript/buffer/long.mjs", "ecmascript/buffer/longbits.mjs");
|
||||
for (var fileName : list) {
|
||||
var fileInputStream = ClassUtils.getFileFromClassPath(fileName);
|
||||
var outputPath = StringUtils.format("{}/{}", protocolOutputPath, StringUtils.substringAfterFirst(fileName, "ecmascript/"));
|
||||
var createFile = new File(outputPath);
|
||||
FileUtils.writeInputStreamToFile(createFile, fileInputStream);
|
||||
}
|
||||
}
|
||||
|
||||
public String formatProtocolTemplate(ProtocolRegistration registration) {
|
||||
var protocol_id = registration.protocolId();
|
||||
var protocol_name = registration.getConstructor().getDeclaringClass().getSimpleName();
|
||||
var protocolTemplate = ClassUtils.getFileFromClassPathToString("ecmascript/ProtocolTemplate.mjs");
|
||||
var placeholderMap = Map.of(
|
||||
CodeTemplatePlaceholder.protocol_note, GenerateProtocolNote.protocol_note(protocol_id, CodeLanguage.EcmaScript)
|
||||
, CodeTemplatePlaceholder.protocol_name, protocol_name
|
||||
, CodeTemplatePlaceholder.protocol_id, String.valueOf(protocol_id)
|
||||
, CodeTemplatePlaceholder.protocol_field_definition, protocol_field_definition(registration)
|
||||
, CodeTemplatePlaceholder.protocol_write_serialization, protocol_write_serialization(registration)
|
||||
, CodeTemplatePlaceholder.protocol_read_deserialization, protocol_read_deserialization(registration)
|
||||
);
|
||||
return CodeTemplatePlaceholder.formatTemplate(protocolTemplate, placeholderMap);
|
||||
}
|
||||
|
||||
public String formatProtocolClassTemplate(ProtocolRegistration registration) {
|
||||
var protocol_id = registration.protocolId();
|
||||
var protocol_name = registration.getConstructor().getDeclaringClass().getSimpleName();
|
||||
var protocolTemplate = ClassUtils.getFileFromClassPathToString("ecmascript/ProtocolClassTemplate.mjs");
|
||||
var placeholderMap = Map.of(
|
||||
CodeTemplatePlaceholder.protocol_note, GenerateProtocolNote.protocol_note(protocol_id, CodeLanguage.EcmaScript)
|
||||
, CodeTemplatePlaceholder.protocol_name, protocol_name
|
||||
, CodeTemplatePlaceholder.protocol_id, String.valueOf(protocol_id)
|
||||
, CodeTemplatePlaceholder.protocol_field_definition, protocol_field_definition(registration)
|
||||
, CodeTemplatePlaceholder.protocol_write_serialization, protocol_write_serialization(registration)
|
||||
, CodeTemplatePlaceholder.protocol_read_deserialization, protocol_read_deserialization(registration)
|
||||
);
|
||||
return CodeTemplatePlaceholder.formatTemplate(protocolTemplate, 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.EcmaScript);
|
||||
for (var fieldNote : fieldNotes) {
|
||||
fieldDefinitionBuilder.append(fieldNote).append(LS);
|
||||
}
|
||||
var triple = esSerializer(fieldRegistration.serializer()).field(field, fieldRegistration);
|
||||
fieldDefinitionBuilder.append(StringUtils.format("{} = {}; // {}", 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];
|
||||
esSerializer(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 = esSerializer(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 = esSerializer(fieldRegistration.serializer()).readObject(jsBuilder, 0, field, fieldRegistration);
|
||||
jsBuilder.append(StringUtils.format("packet.{} = {};", field.getName(), readObject)).append(LS);
|
||||
}
|
||||
return jsBuilder.toString();
|
||||
}
|
||||
}
|
||||
+5
-5
@@ -11,7 +11,7 @@
|
||||
* See the License for the specific language governing permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package com.zfoo.protocol.serializer.es;
|
||||
package com.zfoo.protocol.serializer.ecmascript;
|
||||
|
||||
import com.zfoo.protocol.generate.GenerateProtocolFile;
|
||||
import com.zfoo.protocol.model.Triple;
|
||||
@@ -39,7 +39,7 @@ public class EsArraySerializer implements IEsSerializer {
|
||||
@Override
|
||||
public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
if (CutDownArraySerializer.getInstance().writeObject(builder, objectStr, field, fieldRegistration, CodeLanguage.ES)) {
|
||||
if (CutDownArraySerializer.getInstance().writeObject(builder, objectStr, field, fieldRegistration, CodeLanguage.EcmaScript)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@ public class EsArraySerializer implements IEsSerializer {
|
||||
String element = "element" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append(StringUtils.format("{}.forEach({} => {", objectStr, element)).append(LS);
|
||||
GenerateEsUtils.esSerializer(arrayField.getArrayElementRegistration().serializer())
|
||||
CodeGenerateEcmaScript.esSerializer(arrayField.getArrayElementRegistration().serializer())
|
||||
.writeObject(builder, element, deep + 2, field, arrayField.getArrayElementRegistration());
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append("});").append(LS);
|
||||
@@ -68,7 +68,7 @@ public class EsArraySerializer implements IEsSerializer {
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
var cutDown = CutDownArraySerializer.getInstance().readObject(builder, field, fieldRegistration, CodeLanguage.ES);
|
||||
var cutDown = CutDownArraySerializer.getInstance().readObject(builder, field, fieldRegistration, CodeLanguage.EcmaScript);
|
||||
if (cutDown != null) {
|
||||
return cutDown;
|
||||
}
|
||||
@@ -88,7 +88,7 @@ public class EsArraySerializer implements IEsSerializer {
|
||||
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 = GenerateEsUtils.esSerializer(arrayField.getArrayElementRegistration().serializer())
|
||||
String readObject = CodeGenerateEcmaScript.esSerializer(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
@@ -11,7 +11,7 @@
|
||||
* See the License for the specific language governing permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package com.zfoo.protocol.serializer.es;
|
||||
package com.zfoo.protocol.serializer.ecmascript;
|
||||
|
||||
import com.zfoo.protocol.generate.GenerateProtocolFile;
|
||||
import com.zfoo.protocol.model.Triple;
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
* See the License for the specific language governing permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package com.zfoo.protocol.serializer.es;
|
||||
package com.zfoo.protocol.serializer.ecmascript;
|
||||
|
||||
import com.zfoo.protocol.generate.GenerateProtocolFile;
|
||||
import com.zfoo.protocol.model.Triple;
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
* See the License for the specific language governing permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package com.zfoo.protocol.serializer.es;
|
||||
package com.zfoo.protocol.serializer.ecmascript;
|
||||
|
||||
import com.zfoo.protocol.generate.GenerateProtocolFile;
|
||||
import com.zfoo.protocol.model.Triple;
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
* See the License for the specific language governing permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package com.zfoo.protocol.serializer.es;
|
||||
package com.zfoo.protocol.serializer.ecmascript;
|
||||
|
||||
import com.zfoo.protocol.generate.GenerateProtocolFile;
|
||||
import com.zfoo.protocol.model.Triple;
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
* See the License for the specific language governing permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package com.zfoo.protocol.serializer.es;
|
||||
package com.zfoo.protocol.serializer.ecmascript;
|
||||
|
||||
import com.zfoo.protocol.generate.GenerateProtocolFile;
|
||||
import com.zfoo.protocol.model.Triple;
|
||||
+5
-5
@@ -11,7 +11,7 @@
|
||||
* See the License for the specific language governing permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package com.zfoo.protocol.serializer.es;
|
||||
package com.zfoo.protocol.serializer.ecmascript;
|
||||
|
||||
import com.zfoo.protocol.generate.GenerateProtocolFile;
|
||||
import com.zfoo.protocol.model.Triple;
|
||||
@@ -38,7 +38,7 @@ public class EsListSerializer implements IEsSerializer {
|
||||
@Override
|
||||
public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
if (CutDownListSerializer.getInstance().writeObject(builder, objectStr, field, fieldRegistration, CodeLanguage.ES)) {
|
||||
if (CutDownListSerializer.getInstance().writeObject(builder, objectStr, field, fieldRegistration, CodeLanguage.EcmaScript)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -56,7 +56,7 @@ public class EsListSerializer implements IEsSerializer {
|
||||
String element = "element" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append(StringUtils.format("{}.forEach({} => {", objectStr, element)).append(LS);
|
||||
GenerateEsUtils.esSerializer(listField.getListElementRegistration().serializer())
|
||||
CodeGenerateEcmaScript.esSerializer(listField.getListElementRegistration().serializer())
|
||||
.writeObject(builder, element, deep + 2, field, listField.getListElementRegistration());
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append("});").append(LS);
|
||||
@@ -67,7 +67,7 @@ public class EsListSerializer implements IEsSerializer {
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
var cutDown = CutDownListSerializer.getInstance().readObject(builder, field, fieldRegistration, CodeLanguage.ES);
|
||||
var cutDown = CutDownListSerializer.getInstance().readObject(builder, field, fieldRegistration, CodeLanguage.EcmaScript);
|
||||
if (cutDown != null) {
|
||||
return cutDown;
|
||||
}
|
||||
@@ -87,7 +87,7 @@ public class EsListSerializer implements IEsSerializer {
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
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())
|
||||
String readObject = CodeGenerateEcmaScript.esSerializer(listField.getListElementRegistration().serializer())
|
||||
.readObject(builder, deep + 2, field, listField.getListElementRegistration());
|
||||
GenerateProtocolFile.addTab(builder, deep + 2);
|
||||
builder.append(StringUtils.format("{}.push({});", result, readObject)).append(LS);
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
* See the License for the specific language governing permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package com.zfoo.protocol.serializer.es;
|
||||
package com.zfoo.protocol.serializer.ecmascript;
|
||||
|
||||
import com.zfoo.protocol.generate.GenerateProtocolFile;
|
||||
import com.zfoo.protocol.model.Triple;
|
||||
+7
-7
@@ -11,7 +11,7 @@
|
||||
* See the License for the specific language governing permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package com.zfoo.protocol.serializer.es;
|
||||
package com.zfoo.protocol.serializer.ecmascript;
|
||||
|
||||
import com.zfoo.protocol.generate.GenerateProtocolFile;
|
||||
import com.zfoo.protocol.model.Triple;
|
||||
@@ -38,7 +38,7 @@ public class EsMapSerializer implements IEsSerializer {
|
||||
@Override
|
||||
public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
if (CutDownMapSerializer.getInstance().writeObject(builder, objectStr, field, fieldRegistration, CodeLanguage.ES)) {
|
||||
if (CutDownMapSerializer.getInstance().writeObject(builder, objectStr, field, fieldRegistration, CodeLanguage.EcmaScript)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -58,9 +58,9 @@ public class EsMapSerializer implements IEsSerializer {
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append(StringUtils.format("{}.forEach(({}, {}) => {", objectStr, value, key)).append(LS);
|
||||
GenerateEsUtils.esSerializer(mapField.getMapKeyRegistration().serializer())
|
||||
CodeGenerateEcmaScript.esSerializer(mapField.getMapKeyRegistration().serializer())
|
||||
.writeObject(builder, key, deep + 2, field, mapField.getMapKeyRegistration());
|
||||
GenerateEsUtils.esSerializer(mapField.getMapValueRegistration().serializer())
|
||||
CodeGenerateEcmaScript.esSerializer(mapField.getMapValueRegistration().serializer())
|
||||
.writeObject(builder, value, deep + 2, field, mapField.getMapValueRegistration());
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append("});").append(LS);
|
||||
@@ -71,7 +71,7 @@ public class EsMapSerializer implements IEsSerializer {
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
var cutDown = CutDownMapSerializer.getInstance().readObject(builder, field, fieldRegistration, CodeLanguage.ES);
|
||||
var cutDown = CutDownMapSerializer.getInstance().readObject(builder, field, fieldRegistration, CodeLanguage.EcmaScript);
|
||||
if (cutDown != null) {
|
||||
return cutDown;
|
||||
}
|
||||
@@ -92,11 +92,11 @@ public class EsMapSerializer implements IEsSerializer {
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append(StringUtils.format("for (let {} = 0; {} < {}; {}++) {", i, i, size, i)).append(LS);
|
||||
|
||||
String keyObject = GenerateEsUtils.esSerializer(mapField.getMapKeyRegistration().serializer())
|
||||
String keyObject = CodeGenerateEcmaScript.esSerializer(mapField.getMapKeyRegistration().serializer())
|
||||
.readObject(builder, deep + 2, field, mapField.getMapKeyRegistration());
|
||||
|
||||
|
||||
String valueObject = GenerateEsUtils.esSerializer(mapField.getMapValueRegistration().serializer())
|
||||
String valueObject = CodeGenerateEcmaScript.esSerializer(mapField.getMapValueRegistration().serializer())
|
||||
.readObject(builder, deep + 2, field, mapField.getMapValueRegistration());
|
||||
GenerateProtocolFile.addTab(builder, deep + 2);
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
* See the License for the specific language governing permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package com.zfoo.protocol.serializer.es;
|
||||
package com.zfoo.protocol.serializer.ecmascript;
|
||||
|
||||
import com.zfoo.protocol.generate.GenerateProtocolFile;
|
||||
import com.zfoo.protocol.model.Triple;
|
||||
+5
-5
@@ -11,7 +11,7 @@
|
||||
* See the License for the specific language governing permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package com.zfoo.protocol.serializer.es;
|
||||
package com.zfoo.protocol.serializer.ecmascript;
|
||||
|
||||
import com.zfoo.protocol.generate.GenerateProtocolFile;
|
||||
import com.zfoo.protocol.model.Triple;
|
||||
@@ -38,7 +38,7 @@ public class EsSetSerializer implements IEsSerializer {
|
||||
@Override
|
||||
public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
if (CutDownSetSerializer.getInstance().writeObject(builder, objectStr, field, fieldRegistration, CodeLanguage.ES)) {
|
||||
if (CutDownSetSerializer.getInstance().writeObject(builder, objectStr, field, fieldRegistration, CodeLanguage.EcmaScript)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@ public class EsSetSerializer implements IEsSerializer {
|
||||
String element = "element" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append(StringUtils.format("{}.forEach({} => {", objectStr, element)).append(LS);
|
||||
GenerateEsUtils.esSerializer(setField.getSetElementRegistration().serializer())
|
||||
CodeGenerateEcmaScript.esSerializer(setField.getSetElementRegistration().serializer())
|
||||
.writeObject(builder, element, deep + 2, field, setField.getSetElementRegistration());
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append("});").append(LS);
|
||||
@@ -68,7 +68,7 @@ public class EsSetSerializer implements IEsSerializer {
|
||||
@Override
|
||||
public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) {
|
||||
GenerateProtocolFile.addTab(builder, deep);
|
||||
var cutDown = CutDownSetSerializer.getInstance().readObject(builder, field, fieldRegistration, CodeLanguage.ES);
|
||||
var cutDown = CutDownSetSerializer.getInstance().readObject(builder, field, fieldRegistration, CodeLanguage.EcmaScript);
|
||||
if (cutDown != null) {
|
||||
return cutDown;
|
||||
}
|
||||
@@ -88,7 +88,7 @@ public class EsSetSerializer implements IEsSerializer {
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
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())
|
||||
String readObject = CodeGenerateEcmaScript.esSerializer(setField.getSetElementRegistration().serializer())
|
||||
.readObject(builder, deep + 2, field, setField.getSetElementRegistration());
|
||||
GenerateProtocolFile.addTab(builder, deep + 2);
|
||||
builder.append(StringUtils.format("{}.add({});", result, readObject)).append(LS);
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
* See the License for the specific language governing permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package com.zfoo.protocol.serializer.es;
|
||||
package com.zfoo.protocol.serializer.ecmascript;
|
||||
|
||||
import com.zfoo.protocol.generate.GenerateProtocolFile;
|
||||
import com.zfoo.protocol.model.Triple;
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
* See the License for the specific language governing permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package com.zfoo.protocol.serializer.es;
|
||||
package com.zfoo.protocol.serializer.ecmascript;
|
||||
|
||||
import com.zfoo.protocol.generate.GenerateProtocolFile;
|
||||
import com.zfoo.protocol.model.Triple;
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
* See the License for the specific language governing permissions and limitations under the License.
|
||||
*/
|
||||
|
||||
package com.zfoo.protocol.serializer.es;
|
||||
package com.zfoo.protocol.serializer.ecmascript;
|
||||
|
||||
import com.zfoo.protocol.model.Triple;
|
||||
import com.zfoo.protocol.registration.field.IFieldRegistration;
|
||||
@@ -1,197 +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.es;
|
||||
|
||||
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.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 GenerateEsUtils {
|
||||
private static final Logger logger = LoggerFactory.getLogger(GenerateEsUtils.class);
|
||||
// custom configuration
|
||||
public static String protocolOutputRootPath = "zfooes";
|
||||
private static String protocolOutputPath = StringUtils.EMPTY;
|
||||
|
||||
private static Map<ISerializer, IEsSerializer> esSerializerMap;
|
||||
|
||||
|
||||
public static IEsSerializer esSerializer(ISerializer serializer) {
|
||||
return esSerializerMap.get(serializer);
|
||||
}
|
||||
|
||||
public static void init(GenerateOperation generateOperation) {
|
||||
protocolOutputPath = FileUtils.joinPath(generateOperation.getProtocolPath(), protocolOutputRootPath);
|
||||
FileUtils.deleteFile(new File(protocolOutputPath));
|
||||
|
||||
esSerializerMap = new HashMap<>();
|
||||
esSerializerMap.put(BooleanSerializer.INSTANCE, new EsBooleanSerializer());
|
||||
esSerializerMap.put(ByteSerializer.INSTANCE, new EsByteSerializer());
|
||||
esSerializerMap.put(ShortSerializer.INSTANCE, new EsShortSerializer());
|
||||
esSerializerMap.put(IntSerializer.INSTANCE, new EsIntSerializer());
|
||||
esSerializerMap.put(LongSerializer.INSTANCE, new EsLongSerializer());
|
||||
esSerializerMap.put(FloatSerializer.INSTANCE, new EsFloatSerializer());
|
||||
esSerializerMap.put(DoubleSerializer.INSTANCE, new EsDoubleSerializer());
|
||||
esSerializerMap.put(StringSerializer.INSTANCE, new EsStringSerializer());
|
||||
esSerializerMap.put(ArraySerializer.INSTANCE, new EsArraySerializer());
|
||||
esSerializerMap.put(ListSerializer.INSTANCE, new EsListSerializer());
|
||||
esSerializerMap.put(SetSerializer.INSTANCE, new EsSetSerializer());
|
||||
esSerializerMap.put(MapSerializer.INSTANCE, new EsMapSerializer());
|
||||
esSerializerMap.put(ObjectProtocolSerializer.INSTANCE, new EsObjectProtocolSerializer());
|
||||
}
|
||||
|
||||
public static void clear() {
|
||||
protocolOutputRootPath = null;
|
||||
protocolOutputPath = null;
|
||||
esSerializerMap = null;
|
||||
}
|
||||
|
||||
public static void createProtocolManager(List<ProtocolRegistration> protocolList) throws IOException {
|
||||
var list = List.of("es/buffer/ByteBuffer.mjs", "es/buffer/long.mjs", "es/buffer/longbits.mjs");
|
||||
for (var fileName : list) {
|
||||
var fileInputStream = ClassUtils.getFileFromClassPath(fileName);
|
||||
var outputPath = StringUtils.format("{}/{}", protocolOutputPath, StringUtils.substringAfterFirst(fileName, "es/"));
|
||||
var createFile = new File(outputPath);
|
||||
FileUtils.writeInputStreamToFile(createFile, fileInputStream);
|
||||
}
|
||||
|
||||
// 生成ProtocolManager.mjs文件
|
||||
var protocolManagerTemplate = ClassUtils.getFileFromClassPathToString("es/ProtocolManagerTemplate.mjs");
|
||||
|
||||
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.ES);
|
||||
importBuilder.append(StringUtils.format("import {} from './{}.mjs';", protocolName, path)).append(LS);
|
||||
initProtocolBuilder.append(StringUtils.format("protocols.set({}, {});", protocolId, protocolName)).append(LS);
|
||||
}
|
||||
|
||||
protocolManagerTemplate = StringUtils.format(protocolManagerTemplate, importBuilder.toString().trim(), initProtocolBuilder.toString().trim());
|
||||
var file = new File(StringUtils.format("{}/{}", protocolOutputPath, "ProtocolManager.mjs"));
|
||||
FileUtils.writeStringToFile(file, protocolManagerTemplate, true);
|
||||
logger.info("Generated ES protocol manager file:[{}] is in path:[{}]", file.getName(), file.getAbsolutePath());
|
||||
}
|
||||
|
||||
public static void createEsProtocolFile(ProtocolRegistration registration) throws IOException {
|
||||
var protocolId = registration.protocolId();
|
||||
var registrationConstructor = registration.getConstructor();
|
||||
var protocolClazzName = registrationConstructor.getDeclaringClass().getSimpleName();
|
||||
|
||||
var protocolTemplate = ClassUtils.getFileFromClassPathToString("es/ProtocolTemplate.mjs");
|
||||
|
||||
var classNote = GenerateProtocolNote.classNote(protocolId, CodeLanguage.ES, TAB, 0);
|
||||
var fieldDefinition = fieldDefinition(registration);
|
||||
var writeObject = writeObject(registration);
|
||||
var readObject = readObject(registration);
|
||||
|
||||
protocolTemplate = StringUtils.format(protocolTemplate, classNote, protocolClazzName
|
||||
, fieldDefinition.trim(), protocolId, protocolClazzName
|
||||
, writeObject.trim(), protocolClazzName, readObject.trim(), protocolClazzName);
|
||||
var outputPath = StringUtils.format("{}/{}/{}.mjs", protocolOutputPath, GenerateProtocolPath.getProtocolPath(protocolId), protocolClazzName);
|
||||
var file = new File(outputPath);
|
||||
FileUtils.writeStringToFile(file, protocolTemplate, true);
|
||||
logger.info("Generated ES 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.ES);
|
||||
for (var fieldNote : fieldNotes) {
|
||||
fieldDefinitionBuilder.append(TAB).append(fieldNote).append(LS);
|
||||
}
|
||||
var triple = esSerializer(fieldRegistration.serializer()).field(field, fieldRegistration);
|
||||
fieldDefinitionBuilder.append(TAB)
|
||||
.append(StringUtils.format("{} = {}; // {}", fieldName, triple.getRight(), triple.getLeft()))
|
||||
.append(LS);
|
||||
|
||||
}
|
||||
return fieldDefinitionBuilder.toString();
|
||||
}
|
||||
|
||||
private static String writeObject(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(TAB + TAB).append(StringUtils.format("buffer.writeInt({});", registration.getPredictionLength())).append(LS);
|
||||
} else {
|
||||
jsBuilder.append(TAB + TAB).append("buffer.writeInt(-1);").append(LS);
|
||||
}
|
||||
for (var i = 0; i < fields.length; i++) {
|
||||
var field = fields[i];
|
||||
var fieldRegistration = fieldRegistrations[i];
|
||||
esSerializer(fieldRegistration.serializer()).writeObject(jsBuilder, "packet." + field.getName(), 2, field, fieldRegistration);
|
||||
}
|
||||
if (registration.isCompatible()) {
|
||||
jsBuilder.append(TAB + TAB).append(StringUtils.format("buffer.adjustPadding({}, beforeWriteIndex);", registration.getPredictionLength())).append(LS);
|
||||
}
|
||||
return jsBuilder.toString();
|
||||
}
|
||||
|
||||
private static String readObject(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(TAB + TAB).append("if (buffer.compatibleRead(beforeReadIndex, length)) {").append(LS);
|
||||
var compatibleReadObject = esSerializer(fieldRegistration.serializer()).readObject(jsBuilder, 3, field, fieldRegistration);
|
||||
jsBuilder.append(TAB + TAB + TAB).append(StringUtils.format("packet.{} = {};", field.getName(), compatibleReadObject)).append(LS);
|
||||
jsBuilder.append(TAB + TAB).append("}").append(LS);
|
||||
continue;
|
||||
}
|
||||
var readObject = esSerializer(fieldRegistration.serializer()).readObject(jsBuilder, 2, field, fieldRegistration);
|
||||
jsBuilder.append(TAB + TAB).append(StringUtils.format("packet.{} = {};", field.getName(), readObject)).append(LS);
|
||||
}
|
||||
return jsBuilder.toString();
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -42,8 +42,8 @@ import static com.zfoo.protocol.util.StringUtils.TAB;
|
||||
/**
|
||||
* @author godotg
|
||||
*/
|
||||
public class CodeGenerateJavascript implements ICodeGenerate {
|
||||
private static final Logger logger = LoggerFactory.getLogger(CodeGenerateJavascript.class);
|
||||
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;
|
||||
+2
-2
@@ -57,7 +57,7 @@ public class JsArraySerializer implements IJsSerializer {
|
||||
String element = "element" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append(StringUtils.format("{}.forEach({} => {", objectStr, element)).append(LS);
|
||||
CodeGenerateJavascript.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);
|
||||
@@ -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 = CodeGenerateJavascript.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);
|
||||
|
||||
+2
-2
@@ -56,7 +56,7 @@ public class JsListSerializer implements IJsSerializer {
|
||||
String element = "element" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append(StringUtils.format("{}.forEach({} => {", objectStr, element)).append(LS);
|
||||
CodeGenerateJavascript.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);
|
||||
@@ -87,7 +87,7 @@ public class JsListSerializer implements IJsSerializer {
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
String i = "index" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("for (let {} = 0; {} < {}; {}++) {", i, i, size, i)).append(LS);
|
||||
String readObject = CodeGenerateJavascript.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);
|
||||
|
||||
@@ -58,9 +58,9 @@ public class JsMapSerializer implements IJsSerializer {
|
||||
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append(StringUtils.format("{}.forEach(({}, {}) => {", objectStr, value, key)).append(LS);
|
||||
CodeGenerateJavascript.jsSerializer(mapField.getMapKeyRegistration().serializer())
|
||||
CodeGenerateJavaScript.jsSerializer(mapField.getMapKeyRegistration().serializer())
|
||||
.writeObject(builder, key, deep + 2, field, mapField.getMapKeyRegistration());
|
||||
CodeGenerateJavascript.jsSerializer(mapField.getMapValueRegistration().serializer())
|
||||
CodeGenerateJavaScript.jsSerializer(mapField.getMapValueRegistration().serializer())
|
||||
.writeObject(builder, value, deep + 2, field, mapField.getMapValueRegistration());
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append("});").append(LS);
|
||||
@@ -92,11 +92,11 @@ public class JsMapSerializer implements IJsSerializer {
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append(StringUtils.format("for (let {} = 0; {} < {}; {}++) {", i, i, size, i)).append(LS);
|
||||
|
||||
String keyObject = CodeGenerateJavascript.jsSerializer(mapField.getMapKeyRegistration().serializer())
|
||||
String keyObject = CodeGenerateJavaScript.jsSerializer(mapField.getMapKeyRegistration().serializer())
|
||||
.readObject(builder, deep + 2, field, mapField.getMapKeyRegistration());
|
||||
|
||||
|
||||
String valueObject = CodeGenerateJavascript.jsSerializer(mapField.getMapValueRegistration().serializer())
|
||||
String valueObject = CodeGenerateJavaScript.jsSerializer(mapField.getMapValueRegistration().serializer())
|
||||
.readObject(builder, deep + 2, field, mapField.getMapValueRegistration());
|
||||
GenerateProtocolFile.addTab(builder, deep + 2);
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@ public class JsSetSerializer implements IJsSerializer {
|
||||
String element = "element" + GenerateProtocolFile.localVariableId++;
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append(StringUtils.format("{}.forEach({} => {", objectStr, element)).append(LS);
|
||||
CodeGenerateJavascript.jsSerializer(setField.getSetElementRegistration().serializer())
|
||||
CodeGenerateJavaScript.jsSerializer(setField.getSetElementRegistration().serializer())
|
||||
.writeObject(builder, element, deep + 2, field, setField.getSetElementRegistration());
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
builder.append("});").append(LS);
|
||||
@@ -88,7 +88,7 @@ public class JsSetSerializer implements IJsSerializer {
|
||||
GenerateProtocolFile.addTab(builder, deep + 1);
|
||||
String i = "index" + GenerateProtocolFile.localVariableId++;
|
||||
builder.append(StringUtils.format("for (let {} = 0; {} < {}; {}++) {", i, i, size, i)).append(LS);
|
||||
String readObject = CodeGenerateJavascript.jsSerializer(setField.getSetElementRegistration().serializer())
|
||||
String readObject = CodeGenerateJavaScript.jsSerializer(setField.getSetElementRegistration().serializer())
|
||||
.readObject(builder, deep + 2, field, setField.getSetElementRegistration());
|
||||
GenerateProtocolFile.addTab(builder, deep + 2);
|
||||
builder.append(StringUtils.format("{}.add({});", result, readObject)).append(LS);
|
||||
|
||||
+9
-11
@@ -1,11 +1,11 @@
|
||||
{}
|
||||
class {} {
|
||||
{}
|
||||
${protocol_note}
|
||||
class ${protocol_name} {
|
||||
${protocol_field_definition}
|
||||
|
||||
static PROTOCOL_ID = {};
|
||||
static PROTOCOL_ID = ${protocol_id};
|
||||
|
||||
protocolId() {
|
||||
return {}.PROTOCOL_ID;
|
||||
return ${protocol_name}.PROTOCOL_ID;
|
||||
}
|
||||
|
||||
static write(buffer, packet) {
|
||||
@@ -13,7 +13,7 @@ class {} {
|
||||
buffer.writeInt(0);
|
||||
return;
|
||||
}
|
||||
{}
|
||||
${protocol_write_serialization}
|
||||
}
|
||||
|
||||
static read(buffer) {
|
||||
@@ -22,13 +22,11 @@ class {} {
|
||||
return null;
|
||||
}
|
||||
const beforeReadIndex = buffer.getReadOffset();
|
||||
const packet = new {}();
|
||||
{}
|
||||
const packet = new ${protocol_name}();
|
||||
${protocol_read_deserialization}
|
||||
if (length > 0) {
|
||||
buffer.setReadOffset(beforeReadIndex + length);
|
||||
}
|
||||
return packet;
|
||||
}
|
||||
|
||||
}
|
||||
export default {};
|
||||
}
|
||||
+2
-2
@@ -1,9 +1,9 @@
|
||||
{}
|
||||
${protocol_imports}
|
||||
|
||||
const protocols = new Map();
|
||||
|
||||
// initProtocol
|
||||
{}
|
||||
${protocol_manager_registrations}
|
||||
|
||||
class ProtocolManager {
|
||||
static getProtocol(protocolId) {
|
||||
@@ -0,0 +1,33 @@
|
||||
${protocol_note}
|
||||
class ${protocol_name} {
|
||||
${protocol_field_definition}
|
||||
|
||||
static PROTOCOL_ID = ${protocol_id};
|
||||
|
||||
protocolId() {
|
||||
return ${protocol_name}.PROTOCOL_ID;
|
||||
}
|
||||
|
||||
static write(buffer, packet) {
|
||||
if (packet === null) {
|
||||
buffer.writeInt(0);
|
||||
return;
|
||||
}
|
||||
${protocol_write_serialization}
|
||||
}
|
||||
|
||||
static read(buffer) {
|
||||
const length = buffer.readInt();
|
||||
if (length === 0) {
|
||||
return null;
|
||||
}
|
||||
const beforeReadIndex = buffer.getReadOffset();
|
||||
const packet = new ${protocol_name}();
|
||||
${protocol_read_deserialization}
|
||||
if (length > 0) {
|
||||
buffer.setReadOffset(beforeReadIndex + length);
|
||||
}
|
||||
return packet;
|
||||
}
|
||||
}
|
||||
export default ${protocol_name};
|
||||
@@ -0,0 +1,8 @@
|
||||
class Protocols {
|
||||
}
|
||||
|
||||
${protocol_class}
|
||||
|
||||
${protocol_registration}
|
||||
|
||||
export default Protocols;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { readInt64, writeInt64 } from './longbits.mjs';
|
||||
import {readInt64, writeInt64} from './longbits.mjs';
|
||||
import ProtocolManager from '../ProtocolManager.mjs';
|
||||
|
||||
const empty_str = '';
|
||||
@@ -19,7 +19,6 @@ import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @author godotg
|
||||
@@ -38,7 +37,7 @@ public class GenerateTesting {
|
||||
generateLanguages.add(CodeLanguage.Cpp);
|
||||
generateLanguages.add(CodeLanguage.Go);
|
||||
generateLanguages.add(CodeLanguage.JavaScript);
|
||||
generateLanguages.add(CodeLanguage.ES);
|
||||
generateLanguages.add(CodeLanguage.EcmaScript);
|
||||
generateLanguages.add(CodeLanguage.TypeScript);
|
||||
generateLanguages.add(CodeLanguage.Lua);
|
||||
generateLanguages.add(CodeLanguage.CSharp);
|
||||
|
||||
Reference in New Issue
Block a user