mirror of
https://github.com/tiennm99/zfoo.git
synced 2026-06-01 14:11:43 +00:00
perf[protocol]: 支持TypeScript
This commit is contained in:
@@ -22,9 +22,8 @@
|
||||
-----------
|
||||
Why is zfoo protocol ?
|
||||
-----------
|
||||
- 目前的Java二进制序列化和反序列化速度最快的框架,并且为序列化字节最少的框架
|
||||
- 自定义协议格式的私有化序列化框架,同时能够前后兼容,更加安全,防止破解
|
||||
- 协议目前原生支持 C++ Java Javascript C# Lua GDScript,可以轻易实现跨平台
|
||||
- 目前的Java二进制序列化和反序列化速度最快的自定义格式框架,并且为序列化字节最少的框架,更加安全,可前后兼容
|
||||
- 协议目前原生支持 C++ C# Java Javascript TypeScript GDScript Lua,可以轻易实现跨平台
|
||||
- 单线程的Benchmark测试中,序列化和反序列化速度比Protobuf快50%,比Kryo快100%
|
||||
|
||||
Ⅰ. zfoo简介🚩
|
||||
|
||||
@@ -36,6 +36,7 @@ public class NetConfig {
|
||||
private String protocolParam;
|
||||
// 是否生成对应语言的协议
|
||||
private boolean javascriptProtocol;
|
||||
private boolean typescriptProtocol;
|
||||
private boolean csharpProtocol;
|
||||
private boolean luaProtocol;
|
||||
private boolean gdscriptProtocol;
|
||||
@@ -173,6 +174,14 @@ public class NetConfig {
|
||||
this.cppProtocol = cppProtocol;
|
||||
}
|
||||
|
||||
public boolean isTypescriptProtocol() {
|
||||
return typescriptProtocol;
|
||||
}
|
||||
|
||||
public void setTypescriptProtocol(boolean typescriptProtocol) {
|
||||
this.typescriptProtocol = typescriptProtocol;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) {
|
||||
|
||||
@@ -90,6 +90,9 @@ public class PacketService implements IPacketService {
|
||||
if (netConfig.isJavascriptProtocol()) {
|
||||
generateOperation.getGenerateLanguages().add(CodeLanguage.JavaScript);
|
||||
}
|
||||
if (netConfig.isTypescriptProtocol()) {
|
||||
generateOperation.getGenerateLanguages().add(CodeLanguage.TypeScript);
|
||||
}
|
||||
if (netConfig.isCsharpProtocol()) {
|
||||
generateOperation.getGenerateLanguages().add(CodeLanguage.CSharp);
|
||||
}
|
||||
|
||||
@@ -90,6 +90,7 @@ public class NetDefinitionParser implements BeanDefinitionParser {
|
||||
resolvePlaceholder("id", "id", builder, element, parserContext);
|
||||
resolvePlaceholder("protocol-location", "protocolLocation", builder, element, parserContext);
|
||||
resolvePlaceholder("javascript-protocol", "javascriptProtocol", builder, element, parserContext);
|
||||
resolvePlaceholder("typescript-protocol", "typescriptProtocol", builder, element, parserContext);
|
||||
resolvePlaceholder("csharp-protocol", "csharpProtocol", builder, element, parserContext);
|
||||
resolvePlaceholder("lua-protocol", "luaProtocol", builder, element, parserContext);
|
||||
resolvePlaceholder("gdscript-protocol", "gdscriptProtocol", builder, element, parserContext);
|
||||
|
||||
@@ -67,6 +67,7 @@
|
||||
<xsd:attribute name="id" type="xsd:string" use="required"/>
|
||||
<xsd:attribute name="protocol-location" type="xsd:string" use="required"/>
|
||||
<xsd:attribute name="javascript-protocol" type="xsd:string" default="false"/>
|
||||
<xsd:attribute name="typescript-protocol" type="xsd:string" default="false"/>
|
||||
<xsd:attribute name="csharp-protocol" type="xsd:string" default="false"/>
|
||||
<xsd:attribute name="lua-protocol" type="xsd:string" default="false"/>
|
||||
<xsd:attribute name="gdscript-protocol" type="xsd:string" default="false"/>
|
||||
|
||||
@@ -31,6 +31,7 @@ import com.zfoo.protocol.serializer.javascript.GenerateJsUtils;
|
||||
import com.zfoo.protocol.serializer.lua.GenerateLuaUtils;
|
||||
import com.zfoo.protocol.serializer.protobuf.GenerateProtobufUtils;
|
||||
import com.zfoo.protocol.serializer.reflect.*;
|
||||
import com.zfoo.protocol.serializer.typescript.GenerateTsUtils;
|
||||
import com.zfoo.protocol.util.AssertionUtils;
|
||||
import com.zfoo.protocol.util.ReflectionUtils;
|
||||
import com.zfoo.protocol.util.StringUtils;
|
||||
@@ -205,6 +206,7 @@ public class ProtocolAnalysis {
|
||||
GenerateCppUtils.clear();
|
||||
GenerateCsUtils.clear();
|
||||
GenerateJsUtils.clear();
|
||||
GenerateTsUtils.clear();
|
||||
GenerateLuaUtils.clear();
|
||||
GenerateGdUtils.clear();
|
||||
GenerateProtobufUtils.clear();
|
||||
|
||||
@@ -77,6 +77,7 @@ public abstract class GenerateTsUtils {
|
||||
|
||||
public static void clear() {
|
||||
protocolOutputRootPath = null;
|
||||
tsSerializerMap = null;
|
||||
}
|
||||
|
||||
public static void createProtocolManager(List<IProtocolRegistration> protocolList) throws IOException {
|
||||
|
||||
+2
-2
@@ -40,7 +40,7 @@ public class TsArraySerializer implements ITsSerializer {
|
||||
@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.JavaScript)) {
|
||||
if (CutDownArraySerializer.getInstance().writeObject(builder, objectStr, field, fieldRegistration, CodeLanguage.TypeScript)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -69,7 +69,7 @@ public class TsArraySerializer implements ITsSerializer {
|
||||
@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.JavaScript);
|
||||
var cutDown = CutDownArraySerializer.getInstance().readObject(builder, field, fieldRegistration, CodeLanguage.TypeScript);
|
||||
if (cutDown != null) {
|
||||
return cutDown;
|
||||
}
|
||||
|
||||
+2
-2
@@ -40,7 +40,7 @@ public class TsListSerializer implements ITsSerializer {
|
||||
@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.JavaScript)) {
|
||||
if (CutDownListSerializer.getInstance().writeObject(builder, objectStr, field, fieldRegistration, CodeLanguage.TypeScript)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -69,7 +69,7 @@ public class TsListSerializer implements ITsSerializer {
|
||||
@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.JavaScript);
|
||||
var cutDown = CutDownListSerializer.getInstance().readObject(builder, field, fieldRegistration, CodeLanguage.TypeScript);
|
||||
if (cutDown != null) {
|
||||
return cutDown;
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ public class TsMapSerializer implements ITsSerializer {
|
||||
@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.JavaScript)) {
|
||||
if (CutDownMapSerializer.getInstance().writeObject(builder, objectStr, field, fieldRegistration, CodeLanguage.TypeScript)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -73,7 +73,7 @@ public class TsMapSerializer implements ITsSerializer {
|
||||
@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.JavaScript);
|
||||
var cutDown = CutDownMapSerializer.getInstance().readObject(builder, field, fieldRegistration, CodeLanguage.TypeScript);
|
||||
if (cutDown != null) {
|
||||
return cutDown;
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ public class TsSetSerializer implements ITsSerializer {
|
||||
@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.JavaScript)) {
|
||||
if (CutDownSetSerializer.getInstance().writeObject(builder, objectStr, field, fieldRegistration, CodeLanguage.TypeScript)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -70,7 +70,7 @@ public class TsSetSerializer implements ITsSerializer {
|
||||
@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.JavaScript);
|
||||
var cutDown = CutDownSetSerializer.getInstance().readObject(builder, field, fieldRegistration, CodeLanguage.TypeScript);
|
||||
if (cutDown != null) {
|
||||
return cutDown;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user