mirror of
https://github.com/tiennm99/zfoo.git
synced 2026-09-05 12:17:27 +00:00
perf[protobuf]: generate pojo protocolId in @Protocol
This commit is contained in:
@@ -234,7 +234,12 @@ public abstract class GeneratePbUtils {
|
||||
var documentComment = buildDocumentComment(pbMessage);
|
||||
builder.append(documentComment);
|
||||
|
||||
// message
|
||||
var startProtocolId = proto.getStartProtocolId();
|
||||
builder.append(StringUtils.format("@Protocol(id = {})", startProtocolId)).append(LS);
|
||||
builder.append(StringUtils.format("public class {} {", pbMessage.getName())).append(LS);
|
||||
startProtocolId++;
|
||||
proto.setStartProtocolId(startProtocolId);
|
||||
|
||||
var pbFields = pbMessage.getFields()
|
||||
.stream()
|
||||
|
||||
@@ -54,6 +54,10 @@ public class Proto {
|
||||
* proto文件的单行注释列表
|
||||
*/
|
||||
private List<String> comments = new ArrayList<>();
|
||||
/**
|
||||
* 协议的起始Id
|
||||
*/
|
||||
private short startProtocolId;
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
@@ -110,4 +114,12 @@ public class Proto {
|
||||
public void setComments(List<String> comments) {
|
||||
this.comments = comments;
|
||||
}
|
||||
|
||||
public short getStartProtocolId() {
|
||||
return startProtocolId;
|
||||
}
|
||||
|
||||
public void setStartProtocolId(short startProtocolId) {
|
||||
this.startProtocolId = startProtocolId;
|
||||
}
|
||||
}
|
||||
+14
-1
@@ -16,6 +16,7 @@ package com.zfoo.protocol.serializer.protobuf.parser;
|
||||
import com.zfoo.protocol.collection.CollectionUtils;
|
||||
import com.zfoo.protocol.serializer.protobuf.*;
|
||||
import com.zfoo.protocol.serializer.protobuf.PbField.Cardinality;
|
||||
import com.zfoo.protocol.util.NumberUtils;
|
||||
import com.zfoo.protocol.util.StringUtils;
|
||||
|
||||
import java.util.*;
|
||||
@@ -64,7 +65,19 @@ public class ProtoParser {
|
||||
switch (token) {
|
||||
case "//":
|
||||
String line = readSingleLineComment();
|
||||
comments.add(line);
|
||||
// 解析协议开始的start_protocol_id
|
||||
line = StringUtils.trim(line);
|
||||
if (line.startsWith("start_protocol_id")) {
|
||||
var splits = line.split("=");
|
||||
for (var s : splits) {
|
||||
s = s.trim();
|
||||
if (NumberUtils.isInteger(s)) {
|
||||
proto.setStartProtocolId(Short.parseShort(s));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
comments.add(line);
|
||||
}
|
||||
nextLine();
|
||||
break;
|
||||
case "/*":
|
||||
|
||||
Reference in New Issue
Block a user