Protocol Buffers - Google's data interchange format (grpc依赖)
https://developers.google.com/protocol-buffers/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
280 lines
8.2 KiB
280 lines
8.2 KiB
syntax = "proto3"; |
|
|
|
import 'google/protobuf/any.proto'; |
|
import 'google/protobuf/wrappers.proto'; |
|
import 'google/protobuf/struct.proto'; |
|
import 'proto/test_include.proto'; |
|
import 'proto/test_no_namespace.proto'; |
|
import 'proto/test_php_namespace.proto'; |
|
import 'proto/test_empty_php_namespace.proto'; |
|
import 'proto/test_prefix.proto'; |
|
|
|
package foo; |
|
|
|
message TestMessage { |
|
// Singular |
|
int32 optional_int32 = 1; |
|
int64 optional_int64 = 2; |
|
uint32 optional_uint32 = 3; |
|
uint64 optional_uint64 = 4; |
|
sint32 optional_sint32 = 5; |
|
sint64 optional_sint64 = 6; |
|
fixed32 optional_fixed32 = 7; |
|
fixed64 optional_fixed64 = 8; |
|
sfixed32 optional_sfixed32 = 9; |
|
sfixed64 optional_sfixed64 = 10; |
|
float optional_float = 11; |
|
double optional_double = 12; |
|
bool optional_bool = 13; |
|
string optional_string = 14; |
|
bytes optional_bytes = 15; |
|
|
|
TestEnum optional_enum = 16; |
|
Sub optional_message = 17; |
|
bar.TestInclude optional_included_message = 18; |
|
TestMessage recursive = 19; |
|
|
|
// Repeated |
|
repeated int32 repeated_int32 = 31; |
|
repeated int64 repeated_int64 = 32; |
|
repeated uint32 repeated_uint32 = 33; |
|
repeated uint64 repeated_uint64 = 34; |
|
repeated sint32 repeated_sint32 = 35; |
|
repeated sint64 repeated_sint64 = 36; |
|
repeated fixed32 repeated_fixed32 = 37; |
|
repeated fixed64 repeated_fixed64 = 38; |
|
repeated sfixed32 repeated_sfixed32 = 39; |
|
repeated sfixed64 repeated_sfixed64 = 40; |
|
repeated float repeated_float = 41; |
|
repeated double repeated_double = 42; |
|
repeated bool repeated_bool = 43; |
|
repeated string repeated_string = 44; |
|
repeated bytes repeated_bytes = 45; |
|
|
|
repeated TestEnum repeated_enum = 46; |
|
repeated Sub repeated_message = 47; |
|
repeated TestMessage repeated_recursive = 48; |
|
|
|
oneof my_oneof { |
|
int32 oneof_int32 = 51; |
|
int64 oneof_int64 = 52; |
|
uint32 oneof_uint32 = 53; |
|
uint64 oneof_uint64 = 54; |
|
uint32 oneof_sint32 = 55; |
|
uint64 oneof_sint64 = 56; |
|
uint32 oneof_fixed32 = 57; |
|
uint64 oneof_fixed64 = 58; |
|
uint32 oneof_sfixed32 = 59; |
|
uint64 oneof_sfixed64 = 60; |
|
double oneof_double = 61; |
|
float oneof_float = 62; |
|
bool oneof_bool = 63; |
|
string oneof_string = 64; |
|
bytes oneof_bytes = 65; |
|
TestEnum oneof_enum = 66; |
|
Sub oneof_message = 67; |
|
} |
|
|
|
map<int32, int32> map_int32_int32 = 71; |
|
map<int64, int64> map_int64_int64 = 72; |
|
map<uint32, uint32> map_uint32_uint32 = 73; |
|
map<uint64, uint64> map_uint64_uint64 = 74; |
|
map<sint32, sint32> map_sint32_sint32 = 75; |
|
map<sint64, sint64> map_sint64_sint64 = 76; |
|
map<fixed32, fixed32> map_fixed32_fixed32 = 77; |
|
map<fixed64, fixed64> map_fixed64_fixed64 = 78; |
|
map<sfixed32, sfixed32> map_sfixed32_sfixed32 = 79; |
|
map<sfixed64, sfixed64> map_sfixed64_sfixed64 = 80; |
|
map<int32, float> map_int32_float = 81; |
|
map<int32, double> map_int32_double = 82; |
|
map<bool, bool> map_bool_bool = 83; |
|
map<string, string> map_string_string = 84; |
|
map<int32, bytes> map_int32_bytes = 85; |
|
map<int32, TestEnum> map_int32_enum = 86; |
|
map<int32, Sub> map_int32_message = 87; |
|
|
|
map<int32, TestMessage> map_recursive = 88; |
|
|
|
message Sub { |
|
int32 a = 1; |
|
repeated int32 b = 2; |
|
} |
|
|
|
// Reserved for non-existing field test. |
|
// int32 non_exist = 89; |
|
|
|
NoNamespaceMessage optional_no_namespace_message = 91; |
|
NoNamespaceEnum optional_no_namespace_enum = 92; |
|
repeated NoNamespaceMessage repeated_no_namespace_message = 93; |
|
repeated NoNamespaceEnum repeated_no_namespace_enum = 94; |
|
|
|
enum NestedEnum { |
|
ZERO = 0; |
|
} |
|
|
|
NestedEnum optional_nested_enum = 101; |
|
|
|
// Test prefix for reserved words. |
|
message Empty { |
|
int32 a = 1; |
|
} |
|
|
|
reserved 111; |
|
|
|
// Test map with missing message value |
|
map<string, TestMessage> map_string_message = 121; |
|
map<string, google.protobuf.Any> map_string_any = 122; |
|
map<string, google.protobuf.ListValue> map_string_list = 123; |
|
map<string, google.protobuf.Struct> map_string_struct = 124; |
|
} |
|
|
|
enum TestEnum { |
|
ZERO = 0; |
|
ONE = 1; |
|
TWO = 2; |
|
ECHO = 3; // Test reserved name. |
|
} |
|
|
|
// Test prefix for reserved words. |
|
message Empty { |
|
int32 a = 1; |
|
} |
|
|
|
message ARRAY { |
|
int32 a = 1; |
|
} |
|
|
|
message TestPackedMessage { |
|
repeated int32 repeated_int32 = 90 [packed = true]; |
|
repeated int64 repeated_int64 = 91 [packed = true]; |
|
repeated uint32 repeated_uint32 = 92 [packed = true]; |
|
repeated uint64 repeated_uint64 = 93 [packed = true]; |
|
repeated sint32 repeated_sint32 = 94 [packed = true]; |
|
repeated sint64 repeated_sint64 = 95 [packed = true]; |
|
repeated fixed32 repeated_fixed32 = 96 [packed = true]; |
|
repeated fixed64 repeated_fixed64 = 97 [packed = true]; |
|
repeated sfixed32 repeated_sfixed32 = 98 [packed = true]; |
|
repeated sfixed64 repeated_sfixed64 = 99 [packed = true]; |
|
repeated float repeated_float = 100 [packed = true]; |
|
repeated double repeated_double = 101 [packed = true]; |
|
repeated bool repeated_bool = 102 [packed = true]; |
|
repeated TestEnum repeated_enum = 103 [packed = true]; |
|
} |
|
|
|
// Need to be in sync with TestPackedMessage. |
|
message TestUnpackedMessage { |
|
repeated int32 repeated_int32 = 90 [packed = false]; |
|
repeated int64 repeated_int64 = 91 [packed = false]; |
|
repeated uint32 repeated_uint32 = 92 [packed = false]; |
|
repeated uint64 repeated_uint64 = 93 [packed = false]; |
|
repeated sint32 repeated_sint32 = 94 [packed = false]; |
|
repeated sint64 repeated_sint64 = 95 [packed = false]; |
|
repeated fixed32 repeated_fixed32 = 96 [packed = false]; |
|
repeated fixed64 repeated_fixed64 = 97 [packed = false]; |
|
repeated sfixed32 repeated_sfixed32 = 98 [packed = false]; |
|
repeated sfixed64 repeated_sfixed64 = 99 [packed = false]; |
|
repeated float repeated_float = 100 [packed = false]; |
|
repeated double repeated_double = 101 [packed = false]; |
|
repeated bool repeated_bool = 102 [packed = false]; |
|
repeated TestEnum repeated_enum = 103 [packed = false]; |
|
} |
|
|
|
// /**/@<>&\{ |
|
message TestPhpDoc { |
|
int32 a = 1; |
|
} |
|
|
|
message TestIncludePrefixMessage { |
|
TestPrefix prefix_message = 1; |
|
} |
|
|
|
message TestIncludeNamespaceMessage { |
|
TestNamespace namespace_message = 1; |
|
TestEmptyNamespace empty_namespace_message = 2; |
|
} |
|
|
|
// This will cause upb fields not ordered by the order in the generated code. |
|
message TestRandomFieldOrder { |
|
int64 tag13 = 150; |
|
string tag14 = 160; |
|
} |
|
|
|
message TestReverseFieldOrder { |
|
repeated int32 a = 2; |
|
string b = 1; |
|
} |
|
|
|
message testLowerCaseMessage { |
|
} |
|
|
|
enum testLowerCaseEnum { |
|
VALUE = 0; |
|
} |
|
|
|
message TestAny { |
|
google.protobuf.Any any = 1; |
|
} |
|
|
|
message TestInt32Value { |
|
google.protobuf.Int32Value field = 1; |
|
repeated google.protobuf.Int32Value repeated_field = 2; |
|
oneof oneof_fields { |
|
google.protobuf.Int32Value oneof_field = 3; |
|
int32 int32_field = 4; |
|
} |
|
} |
|
|
|
message TestInt64Value { |
|
google.protobuf.Int64Value field = 1; |
|
repeated google.protobuf.Int64Value repeated_field = 2; |
|
oneof oneof_fields { |
|
google.protobuf.Int64Value oneof_field = 3; |
|
int32 int32_field = 4; |
|
} |
|
} |
|
|
|
message TestUInt32Value { |
|
google.protobuf.UInt32Value field = 1; |
|
repeated google.protobuf.UInt32Value repeated_field = 2; |
|
oneof oneof_fields { |
|
google.protobuf.UInt32Value oneof_field = 3; |
|
int32 int32_field = 4; |
|
} |
|
} |
|
|
|
message TestUInt64Value { |
|
google.protobuf.UInt64Value field = 1; |
|
repeated google.protobuf.UInt64Value repeated_field = 2; |
|
oneof oneof_fields { |
|
google.protobuf.UInt64Value oneof_field = 3; |
|
int32 int32_field = 4; |
|
} |
|
} |
|
|
|
message TestBoolValue { |
|
google.protobuf.BoolValue field = 1; |
|
repeated google.protobuf.BoolValue repeated_field = 2; |
|
oneof oneof_fields { |
|
google.protobuf.BoolValue oneof_field = 3; |
|
int32 int32_field = 4; |
|
} |
|
} |
|
|
|
message TestStringValue { |
|
google.protobuf.StringValue field = 1; |
|
repeated google.protobuf.StringValue repeated_field = 2; |
|
oneof oneof_fields { |
|
google.protobuf.StringValue oneof_field = 3; |
|
int32 int32_field = 4; |
|
} |
|
map<int32, google.protobuf.StringValue> map_field = 5; |
|
} |
|
|
|
message TestBytesValue { |
|
google.protobuf.BytesValue field = 1; |
|
repeated google.protobuf.BytesValue repeated_field = 2; |
|
oneof oneof_fields { |
|
google.protobuf.BytesValue oneof_field = 3; |
|
int32 int32_field = 4; |
|
} |
|
}
|
|
|