mirror of
https://github.com/tiennm99/zfoo.git
synced 2026-10-18 08:15:11 +00:00
del[protobuf]: del wire format
This commit is contained in:
1 parent
d6632f1dda
commit
ebfeb84d3b
7 files changed
+97
-194
No files matched your search
@@ -17,8 +17,8 @@ import com.zfoo.protocol.collection.CollectionUtils;
|
|||||||
import com.zfoo.protocol.serializer.protobuf.builder.JavaBuilder;
|
import com.zfoo.protocol.serializer.protobuf.builder.JavaBuilder;
|
||||||
import com.zfoo.protocol.serializer.protobuf.wire.Option;
|
import com.zfoo.protocol.serializer.protobuf.wire.Option;
|
||||||
import com.zfoo.protocol.serializer.protobuf.wire.ProtoMessage;
|
import com.zfoo.protocol.serializer.protobuf.wire.ProtoMessage;
|
||||||
import com.zfoo.protocol.serializer.protobuf.wire.parser.Proto;
|
import com.zfoo.protocol.serializer.protobuf.parser.Proto;
|
||||||
import com.zfoo.protocol.serializer.protobuf.wire.parser.ProtoParser;
|
import com.zfoo.protocol.serializer.protobuf.parser.ProtoParser;
|
||||||
import com.zfoo.protocol.util.FileUtils;
|
import com.zfoo.protocol.util.FileUtils;
|
||||||
import com.zfoo.protocol.util.StringUtils;
|
import com.zfoo.protocol.util.StringUtils;
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -14,10 +14,10 @@
|
|||||||
package com.zfoo.protocol.serializer.protobuf.builder;
|
package com.zfoo.protocol.serializer.protobuf.builder;
|
||||||
|
|
||||||
import com.zfoo.protocol.collection.CollectionUtils;
|
import com.zfoo.protocol.collection.CollectionUtils;
|
||||||
|
import com.zfoo.protocol.serializer.protobuf.parser.JavaType;
|
||||||
import com.zfoo.protocol.serializer.protobuf.wire.*;
|
import com.zfoo.protocol.serializer.protobuf.wire.*;
|
||||||
import com.zfoo.protocol.serializer.protobuf.wire.PbField.Type;
|
import com.zfoo.protocol.serializer.protobuf.wire.PbField.Type;
|
||||||
import com.zfoo.protocol.serializer.protobuf.wire.WireFormat.JavaType;
|
import com.zfoo.protocol.serializer.protobuf.parser.Proto;
|
||||||
import com.zfoo.protocol.serializer.protobuf.wire.parser.Proto;
|
|
||||||
import com.zfoo.protocol.util.StringUtils;
|
import com.zfoo.protocol.util.StringUtils;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|||||||
@@ -0,0 +1,62 @@
|
|||||||
|
/*
|
||||||
|
* 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.protobuf.parser;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author godotg
|
||||||
|
*/
|
||||||
|
|
||||||
|
import com.zfoo.protocol.collection.ArrayUtils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* java的数据类型和protocol buffer的数据类型的对应关系以及默认值
|
||||||
|
*/
|
||||||
|
public enum JavaType {
|
||||||
|
INT("int", "Integer", 0),
|
||||||
|
LONG("long", "Long", 0L),
|
||||||
|
FLOAT("float", "Float", 0F),
|
||||||
|
DOUBLE("double", "Double", 0D),
|
||||||
|
BOOLEAN("boolean", "Boolean", false),
|
||||||
|
STRING("String", "String", ""),
|
||||||
|
BYTES("byte[]", "byte[]", ArrayUtils.EMPTY_BYTE_ARRAY),
|
||||||
|
ENUM("enum", "enum", null),
|
||||||
|
MESSAGE("", "", null),
|
||||||
|
OBJECT("Object", "Object", null),
|
||||||
|
MAP("Map", "Map", null);
|
||||||
|
|
||||||
|
JavaType(final String typeString, final String boxedType, final Object defaultValue) {
|
||||||
|
this.typeString = typeString;
|
||||||
|
this.boxedType = boxedType;
|
||||||
|
this.defaultValue = defaultValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTypeString() {
|
||||||
|
return this.typeString;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The default value for fields of this type, if it's a primitive type.
|
||||||
|
*/
|
||||||
|
public Object defaultValue() {
|
||||||
|
return this.defaultValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getBoxedType() {
|
||||||
|
return this.boxedType;
|
||||||
|
}
|
||||||
|
|
||||||
|
private final Object defaultValue;
|
||||||
|
private final String typeString;
|
||||||
|
|
||||||
|
private final String boxedType;
|
||||||
|
}
|
||||||
+2
-3
@@ -1,6 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2021 The edap Project
|
* Copyright (C) 2020 The zfoo Authors
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
|
* 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
|
* in compliance with the License. You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
@@ -11,7 +10,7 @@
|
|||||||
* See the License for the specific language governing permissions and limitations under the License.
|
* See the License for the specific language governing permissions and limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.zfoo.protocol.serializer.protobuf.wire.parser;
|
package com.zfoo.protocol.serializer.protobuf.parser;
|
||||||
|
|
||||||
import com.zfoo.protocol.collection.CollectionUtils;
|
import com.zfoo.protocol.collection.CollectionUtils;
|
||||||
import com.zfoo.protocol.serializer.protobuf.wire.*;
|
import com.zfoo.protocol.serializer.protobuf.wire.*;
|
||||||
+4
-21
@@ -1,6 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2021 The edap Project
|
* Copyright (C) 2020 The zfoo Authors
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
|
* 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
|
* in compliance with the License. You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
@@ -11,7 +10,7 @@
|
|||||||
* See the License for the specific language governing permissions and limitations under the License.
|
* See the License for the specific language governing permissions and limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package com.zfoo.protocol.serializer.protobuf.wire.parser;
|
package com.zfoo.protocol.serializer.protobuf.parser;
|
||||||
|
|
||||||
import com.zfoo.protocol.collection.CollectionUtils;
|
import com.zfoo.protocol.collection.CollectionUtils;
|
||||||
import com.zfoo.protocol.serializer.protobuf.wire.*;
|
import com.zfoo.protocol.serializer.protobuf.wire.*;
|
||||||
@@ -22,7 +21,6 @@ import com.zfoo.protocol.util.StringUtils;
|
|||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
import static com.zfoo.protocol.serializer.protobuf.wire.WireFormat.isValidTag;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* proto文件的解析器
|
* proto文件的解析器
|
||||||
@@ -286,22 +284,6 @@ public class ProtoParser {
|
|||||||
return tag;
|
return tag;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 读取proto Field的数字tag值
|
|
||||||
*
|
|
||||||
* @param stag
|
|
||||||
* @return
|
|
||||||
* @throws RuntimeException
|
|
||||||
*/
|
|
||||||
public static int validTag(String stag) throws RuntimeException {
|
|
||||||
int tag = parseInt(stag);
|
|
||||||
if (!isValidTag(tag)) {
|
|
||||||
throw new RuntimeException("tag [" + tag + "] not enabled");
|
|
||||||
} else {
|
|
||||||
return tag;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 读取一个标识符
|
* 读取一个标识符
|
||||||
*
|
*
|
||||||
@@ -429,7 +411,7 @@ public class ProtoParser {
|
|||||||
readValueSeparator('=');
|
readValueSeparator('=');
|
||||||
trim();
|
trim();
|
||||||
ProtoValue pv = readValueUtilSemicolon();
|
ProtoValue pv = readValueUtilSemicolon();
|
||||||
int tag = validTag(pv.getValue());
|
int tag = parseInt(pv.getValue());
|
||||||
trim();
|
trim();
|
||||||
Comment comment = new Comment();
|
Comment comment = new Comment();
|
||||||
if (!comments.isEmpty()) {
|
if (!comments.isEmpty()) {
|
||||||
@@ -919,4 +901,5 @@ public class ProtoParser {
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -13,6 +13,8 @@
|
|||||||
|
|
||||||
package com.zfoo.protocol.serializer.protobuf.wire;
|
package com.zfoo.protocol.serializer.protobuf.wire;
|
||||||
|
|
||||||
|
import com.zfoo.protocol.serializer.protobuf.parser.JavaType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* protocol buffer协议消息体属性数据类型定义
|
* protocol buffer协议消息体属性数据类型定义
|
||||||
*/
|
*/
|
||||||
@@ -51,36 +53,36 @@ public class PbField {
|
|||||||
|
|
||||||
public enum Type {
|
public enum Type {
|
||||||
|
|
||||||
FLOAT("float", WireFormat.JavaType.FLOAT),
|
FLOAT("float", JavaType.FLOAT),
|
||||||
DOUBLE("double", WireFormat.JavaType.DOUBLE),
|
DOUBLE("double", JavaType.DOUBLE),
|
||||||
INT32("int32", WireFormat.JavaType.INT),
|
INT32("int32", JavaType.INT),
|
||||||
INT64("int64", WireFormat.JavaType.LONG),
|
INT64("int64", JavaType.LONG),
|
||||||
UINT32("uint32", WireFormat.JavaType.INT),
|
UINT32("uint32", JavaType.INT),
|
||||||
UINT64("uint64", WireFormat.JavaType.LONG),
|
UINT64("uint64", JavaType.LONG),
|
||||||
SINT32("sint32", WireFormat.JavaType.INT),
|
SINT32("sint32", JavaType.INT),
|
||||||
SINT64("sint64", WireFormat.JavaType.LONG),
|
SINT64("sint64", JavaType.LONG),
|
||||||
FIXED32("fixed32", WireFormat.JavaType.INT),
|
FIXED32("fixed32", JavaType.INT),
|
||||||
FIXED64("fixed64", WireFormat.JavaType.LONG),
|
FIXED64("fixed64", JavaType.LONG),
|
||||||
SFIXED32("sfixed32", WireFormat.JavaType.INT),
|
SFIXED32("sfixed32", JavaType.INT),
|
||||||
SFIXED64("sfixed64", WireFormat.JavaType.LONG),
|
SFIXED64("sfixed64", JavaType.LONG),
|
||||||
BOOL("bool", WireFormat.JavaType.BOOLEAN),
|
BOOL("bool", JavaType.BOOLEAN),
|
||||||
ENUM("enum", WireFormat.JavaType.ENUM),
|
ENUM("enum", JavaType.ENUM),
|
||||||
STRING("string", WireFormat.JavaType.STRING),
|
STRING("string", JavaType.STRING),
|
||||||
BYTES("bytes", WireFormat.JavaType.BYTES),
|
BYTES("bytes", JavaType.BYTES),
|
||||||
MESSAGE("", WireFormat.JavaType.MESSAGE),
|
MESSAGE("", JavaType.MESSAGE),
|
||||||
OBJECT("OBJECT", WireFormat.JavaType.OBJECT),
|
OBJECT("OBJECT", JavaType.OBJECT),
|
||||||
GROUP("group", WireFormat.JavaType.MESSAGE),
|
GROUP("group", JavaType.MESSAGE),
|
||||||
MAP("", WireFormat.JavaType.MAP);
|
MAP("", JavaType.MAP);
|
||||||
|
|
||||||
private final String value;
|
private final String value;
|
||||||
private final WireFormat.JavaType javaType;
|
private final JavaType javaType;
|
||||||
|
|
||||||
Type(String value, WireFormat.JavaType javaType) {
|
Type(String value,JavaType javaType) {
|
||||||
this.value = value;
|
this.value = value;
|
||||||
this.javaType = javaType;
|
this.javaType = javaType;
|
||||||
}
|
}
|
||||||
|
|
||||||
public WireFormat.JavaType javaType() {
|
public JavaType javaType() {
|
||||||
return javaType;
|
return javaType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,143 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2021 The edap Project
|
|
||||||
*
|
|
||||||
* 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.protobuf.wire;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 协议格式定义相关的常量等
|
|
||||||
*/
|
|
||||||
public class WireFormat {
|
|
||||||
|
|
||||||
private WireFormat() {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 定长32位占用的字节长度
|
|
||||||
*/
|
|
||||||
public static final int FIXED_32_SIZE = 4;
|
|
||||||
/**
|
|
||||||
* 定长64位占用的字节长度
|
|
||||||
*/
|
|
||||||
public static final int FIXED_64_SIZE = 8;
|
|
||||||
/**
|
|
||||||
* 变长整型数据最大査勇的字节数
|
|
||||||
*/
|
|
||||||
public static final int MAX_VARINT_SIZE = 5;
|
|
||||||
/**
|
|
||||||
* 定长长整型最大占用的字节数
|
|
||||||
*/
|
|
||||||
public static final int MAX_VARLONG_SIZE = 10;
|
|
||||||
/**
|
|
||||||
* 最小的Tag值
|
|
||||||
*/
|
|
||||||
public static final int MIN_TAG_VALUE = 1;
|
|
||||||
/**
|
|
||||||
* 最大的Tag值
|
|
||||||
*/
|
|
||||||
public static final int MAX_TAG_VALUE = (1 << 29) - 1; // 536,870,911
|
|
||||||
/**
|
|
||||||
* 系统预留Tag的开始值
|
|
||||||
*/
|
|
||||||
public static final int RESERVED_TAG_VALUE_START = 19000;
|
|
||||||
/**
|
|
||||||
* 系统预留Tag的结束值
|
|
||||||
*/
|
|
||||||
public static final int RESERVED_TAG_VALUE_END = 19999;
|
|
||||||
/**
|
|
||||||
* Tag的数据类型占用的bit个数
|
|
||||||
*/
|
|
||||||
static final int TAG_TYPE_BITS = 3;
|
|
||||||
/**
|
|
||||||
* Tag类型的掩码
|
|
||||||
*/
|
|
||||||
static final int TAG_TYPE_MASK = (1 << TAG_TYPE_BITS) - 1;
|
|
||||||
/**
|
|
||||||
* 空的byte数组
|
|
||||||
*/
|
|
||||||
static final byte[] EMPTY_BYTES = new byte[0];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tag值是否符合规则
|
|
||||||
*
|
|
||||||
* @param tag 给定的Tag值
|
|
||||||
* @return 是否符合规则
|
|
||||||
*/
|
|
||||||
public static boolean isValidTag(int tag) {
|
|
||||||
return (tag >= MIN_TAG_VALUE && tag < RESERVED_TAG_VALUE_START)
|
|
||||||
|| (tag > RESERVED_TAG_VALUE_END && tag <= MAX_TAG_VALUE);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 从int值盅获取该Tag的数据类型的int值
|
|
||||||
*
|
|
||||||
* @param tag 给定的int值
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public static int getTagWireType(final int tag) {
|
|
||||||
return tag & TAG_TYPE_MASK;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取给定的int值中Tag的值
|
|
||||||
*
|
|
||||||
* @param tag 解码出的tag的int值
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public static int getTagFieldNumber(final int tag) {
|
|
||||||
return tag >>> TAG_TYPE_BITS;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* java的数据类型和protocol buffer的数据类型的对应关系以及默认值
|
|
||||||
*/
|
|
||||||
public enum JavaType {
|
|
||||||
INT("int", "Integer", 0),
|
|
||||||
LONG("long", "Long", 0L),
|
|
||||||
FLOAT("float", "Float", 0F),
|
|
||||||
DOUBLE("double", "Double", 0D),
|
|
||||||
BOOLEAN("boolean", "Boolean", false),
|
|
||||||
STRING("String", "String", ""),
|
|
||||||
BYTES("byte[]", "byte[]", EMPTY_BYTES),
|
|
||||||
ENUM("enum", "enum", null),
|
|
||||||
MESSAGE("", "", null),
|
|
||||||
OBJECT("Object", "Object", null),
|
|
||||||
MAP("Map", "Map", null);
|
|
||||||
|
|
||||||
JavaType(final String typeString, final String boxedType, final Object defaultValue) {
|
|
||||||
this.typeString = typeString;
|
|
||||||
this.boxedType = boxedType;
|
|
||||||
this.defaultValue = defaultValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTypeString() {
|
|
||||||
return this.typeString;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The default value for fields of this type, if it's a primitive type.
|
|
||||||
*/
|
|
||||||
public Object defaultValue() {
|
|
||||||
return this.defaultValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getBoxedType() {
|
|
||||||
return this.boxedType;
|
|
||||||
}
|
|
||||||
|
|
||||||
private final Object defaultValue;
|
|
||||||
private final String typeString;
|
|
||||||
|
|
||||||
private final String boxedType;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in new issue
Block a user