-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #67 from Medium/sachee/update_descriptor_proto_ver…
…sion update pbnj to protobuf version 3.2.0
- Loading branch information
Showing
3 changed files
with
184 additions
and
45 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -37,10 +37,14 @@ | |
// without any other information (e.g. without reading its imports). | ||
|
||
|
||
syntax = "proto2"; | ||
|
||
package google.protobuf; | ||
option go_package = "github.com/golang/protobuf/protoc-gen-go/descriptor;descriptor"; | ||
option java_package = "com.google.protobuf"; | ||
option java_outer_classname = "DescriptorProtos"; | ||
option csharp_namespace = "Google.Protobuf.Reflection"; | ||
option objc_class_prefix = "GPB"; | ||
|
||
// descriptor.proto must be optimized for speed because reflection-based | ||
// algorithms don't work during bootstrapping. | ||
|
@@ -74,10 +78,14 @@ message FileDescriptorProto { | |
optional FileOptions options = 8; | ||
|
||
// This field contains optional information about the original source code. | ||
// You may safely remove this entire field whithout harming runtime | ||
// You may safely remove this entire field without harming runtime | ||
// functionality of the descriptors -- the information is needed only by | ||
// development tools. | ||
optional SourceCodeInfo source_code_info = 9; | ||
|
||
// The syntax of the proto file. | ||
// The supported values are "proto2" and "proto3". | ||
optional string syntax = 12; | ||
} | ||
|
||
// Describes a message type. | ||
|
@@ -99,6 +107,18 @@ message DescriptorProto { | |
repeated OneofDescriptorProto oneof_decl = 8; | ||
|
||
optional MessageOptions options = 7; | ||
|
||
// Range of reserved tag numbers. Reserved tag numbers may not be used by | ||
// fields or extension ranges in the same message. Reserved ranges may | ||
// not overlap. | ||
message ReservedRange { | ||
optional int32 start = 1; // Inclusive. | ||
optional int32 end = 2; // Exclusive. | ||
} | ||
repeated ReservedRange reserved_range = 9; | ||
// Reserved field names, which may not be used by fields in the same message. | ||
// A given name may only be reserved once. | ||
repeated string reserved_name = 10; | ||
} | ||
|
||
// Describes a field within a message. | ||
|
@@ -119,7 +139,11 @@ message FieldDescriptorProto { | |
TYPE_FIXED32 = 7; | ||
TYPE_BOOL = 8; | ||
TYPE_STRING = 9; | ||
TYPE_GROUP = 10; // Tag-delimited aggregate. | ||
// Tag-delimited aggregate. | ||
// Group type is deprecated and not supported in proto3. However, Proto3 | ||
// implementations should still be able to parse the group wire format and | ||
// treat group fields as unknown fields. | ||
TYPE_GROUP = 10; | ||
TYPE_MESSAGE = 11; // Length-delimited aggregate. | ||
|
||
// New in version 2. | ||
|
@@ -137,7 +161,6 @@ message FieldDescriptorProto { | |
LABEL_OPTIONAL = 1; | ||
LABEL_REQUIRED = 2; | ||
LABEL_REPEATED = 3; | ||
// TODO(sanjay): Should we add LABEL_MAP? | ||
}; | ||
|
||
optional string name = 1; | ||
|
@@ -167,17 +190,22 @@ message FieldDescriptorProto { | |
optional string default_value = 7; | ||
|
||
// If set, gives the index of a oneof in the containing type's oneof_decl | ||
// list. This field is a member of that oneof. Extensions of a oneof should | ||
// not set this since the oneof to which they belong will be inferred based | ||
// on the extension range containing the extension's field number. | ||
// list. This field is a member of that oneof. | ||
optional int32 oneof_index = 9; | ||
|
||
// JSON name of this field. The value is set by protocol compiler. If the | ||
// user has set a "json_name" option on this field, that option's value | ||
// will be used. Otherwise, it's deduced from the field's name by converting | ||
// it to camelCase. | ||
optional string json_name = 10; | ||
|
||
optional FieldOptions options = 8; | ||
} | ||
|
||
// Describes a oneof. | ||
message OneofDescriptorProto { | ||
optional string name = 1; | ||
optional OneofOptions options = 2; | ||
} | ||
|
||
// Describes an enum type. | ||
|
@@ -215,6 +243,11 @@ message MethodDescriptorProto { | |
optional string output_type = 3; | ||
|
||
optional MethodOptions options = 4; | ||
|
||
// Identifies if client streams multiple client messages | ||
optional bool client_streaming = 5 [default=false]; | ||
// Identifies if server streams multiple server messages | ||
optional bool server_streaming = 6 [default=false]; | ||
} | ||
|
||
|
||
|
@@ -241,11 +274,11 @@ message MethodDescriptorProto { | |
// * For options which will be published and used publicly by multiple | ||
// independent entities, e-mail [email protected] | ||
// to reserve extension numbers. Simply provide your project name (e.g. | ||
// Object-C plugin) and your porject website (if available) -- there's no need | ||
// to explain how you intend to use them. Usually you only need one extension | ||
// number. You can declare multiple options with only one extension number by | ||
// putting them in a sub-message. See the Custom Options section of the docs | ||
// for examples: | ||
// Objective-C plugin) and your project website (if available) -- there's no | ||
// need to explain how you intend to use them. Usually you only need one | ||
// extension number. You can declare multiple options with only one extension | ||
// number by putting them in a sub-message. See the Custom Options section of | ||
// the docs for examples: | ||
// https://developers.google.com/protocol-buffers/docs/proto#options | ||
// If this turns out to be popular, a web service will be set up | ||
// to automatically assign option numbers. | ||
|
@@ -275,17 +308,8 @@ message FileOptions { | |
// top-level extensions defined in the file. | ||
optional bool java_multiple_files = 10 [default=false]; | ||
|
||
// If set true, then the Java code generator will generate equals() and | ||
// hashCode() methods for all messages defined in the .proto file. | ||
// - In the full runtime, this is purely a speed optimization, as the | ||
// AbstractMessage base class includes reflection-based implementations of | ||
// these methods. | ||
//- In the lite runtime, setting this option changes the semantics of | ||
// equals() and hashCode() to more closely match those of the full runtime; | ||
// the generated methods compute their results based on field values rather | ||
// than object identity. (Implementations should not assume that hashcodes | ||
// will be consistent across runtimes or versions of the protocol compiler.) | ||
optional bool java_generate_equals_and_hash = 20 [default=false]; | ||
// This option does nothing. | ||
optional bool java_generate_equals_and_hash = 20 [deprecated=true]; | ||
|
||
// If set true, then the Java2 code generator will generate code that | ||
// throws an exception whenever an attempt is made to assign a non-UTF-8 | ||
|
@@ -306,7 +330,10 @@ message FileOptions { | |
optional OptimizeMode optimize_for = 9 [default=SPEED]; | ||
|
||
// Sets the Go package where structs generated from this .proto will be | ||
// placed. There is no default. | ||
// placed. If omitted, the Go package will be derived from the following: | ||
// - The basename of the package import path, if provided. | ||
// - Otherwise, the package statement in the .proto file, if present. | ||
// - Otherwise, the basename of the .proto file, without extension. | ||
optional string go_package = 11; | ||
|
||
|
||
|
@@ -315,7 +342,7 @@ message FileOptions { | |
// are not specific to any particular RPC system. They are generated by the | ||
// main code generators in each language (without additional plugins). | ||
// Generic services were the only kind of service generation supported by | ||
// early versions of proto2. | ||
// early versions of google.protobuf. | ||
// | ||
// Generic services are now considered deprecated in favor of using plugins | ||
// that generate code specific to your particular RPC system. Therefore, | ||
|
@@ -331,12 +358,31 @@ message FileOptions { | |
// least, this is a formalization for deprecating files. | ||
optional bool deprecated = 23 [default=false]; | ||
|
||
// Enables the use of arenas for the proto messages in this file. This applies | ||
// only to generated classes for C++. | ||
optional bool cc_enable_arenas = 31 [default=false]; | ||
|
||
|
||
// Sets the objective c class prefix which is prepended to all objective c | ||
// generated classes from this .proto. There is no default. | ||
optional string objc_class_prefix = 36; | ||
|
||
// Namespace for generated classes; defaults to the package. | ||
optional string csharp_namespace = 37; | ||
|
||
// By default Swift generators will take the proto package and CamelCase it | ||
// replacing '.' with underscore and use that to prefix the types/symbols | ||
// defined. When this options is provided, they will use this value instead | ||
// to prefix the types/symbols defined. | ||
optional string swift_prefix = 39; | ||
|
||
// The parser stores options it doesn't recognize here. See above. | ||
repeated UninterpretedOption uninterpreted_option = 999; | ||
|
||
// Clients can define custom options in extensions of this message. See above. | ||
extensions 1000 to max; | ||
|
||
// reserved 38; | ||
} | ||
|
||
message MessageOptions { | ||
|
@@ -371,6 +417,32 @@ message MessageOptions { | |
// this is a formalization for deprecating messages. | ||
optional bool deprecated = 3 [default=false]; | ||
|
||
// Whether the message is an automatically generated map entry type for the | ||
// maps field. | ||
// | ||
// For maps fields: | ||
// map<KeyType, ValueType> map_field = 1; | ||
// The parsed descriptor looks like: | ||
// message MapFieldEntry { | ||
// option map_entry = true; | ||
// optional KeyType key = 1; | ||
// optional ValueType value = 2; | ||
// } | ||
// repeated MapFieldEntry map_field = 1; | ||
// | ||
// Implementations may choose not to generate the map_entry=true message, but | ||
// use a native map in the target language to hold the keys and values. | ||
// The reflection APIs in such implementions still need to work as | ||
// if the field is a repeated message field. | ||
// | ||
// NOTE: Do not set the option in .proto files. Always use the maps syntax | ||
// instead. The option should only be implicitly set by the proto compiler | ||
// parser. | ||
optional bool map_entry = 7; | ||
|
||
// reserved 8; // javalite_serializable | ||
|
||
|
||
// The parser stores options it doesn't recognize here. See above. | ||
repeated UninterpretedOption uninterpreted_option = 999; | ||
|
||
|
@@ -395,10 +467,30 @@ message FieldOptions { | |
// The packed option can be enabled for repeated primitive fields to enable | ||
// a more efficient representation on the wire. Rather than repeatedly | ||
// writing the tag and type for each element, the entire array is encoded as | ||
// a single length-delimited blob. | ||
// a single length-delimited blob. In proto3, only explicit setting it to | ||
// false will avoid using packed encoding. | ||
optional bool packed = 2; | ||
|
||
|
||
// The jstype option determines the JavaScript type used for values of the | ||
// field. The option is permitted only for 64 bit integral and fixed types | ||
// (int64, uint64, sint64, fixed64, sfixed64). By default these types are | ||
// represented as JavaScript strings. This avoids loss of precision that can | ||
// happen when a large value is converted to a floating point JavaScript | ||
// numbers. Specifying JS_NUMBER for the jstype causes the generated | ||
// JavaScript code to use the JavaScript "number" type instead of strings. | ||
// This option is an enum to permit additional types to be added, | ||
// e.g. goog.math.Integer. | ||
optional JSType jstype = 6 [default = JS_NORMAL]; | ||
enum JSType { | ||
// Use the default type. | ||
JS_NORMAL = 0; | ||
|
||
// Use JavaScript strings. | ||
JS_STRING = 1; | ||
|
||
// Use JavaScript numbers. | ||
JS_NUMBER = 2; | ||
} | ||
|
||
// Should this field be parsed lazily? Lazy applies only to message-type | ||
// fields. It means that when the outer message is initially parsed, the | ||
|
@@ -419,7 +511,7 @@ message FieldOptions { | |
// | ||
// | ||
// Note that implementations may choose not to check required fields within | ||
// a lazy sub-message. That is, calling IsInitialized() on the outher message | ||
// a lazy sub-message. That is, calling IsInitialized() on the outer message | ||
// may return true even if the inner message has missing required fields. | ||
// This is necessary because otherwise the inner message would have to be | ||
// parsed in order to perform the check, defeating the purpose of lazy | ||
|
@@ -436,25 +528,20 @@ message FieldOptions { | |
// is a formalization for deprecating fields. | ||
optional bool deprecated = 3 [default=false]; | ||
|
||
// EXPERIMENTAL. DO NOT USE. | ||
// For "map" fields, the name of the field in the enclosed type that | ||
// is the key for this map. For example, suppose we have: | ||
// message Item { | ||
// required string name = 1; | ||
// required string value = 2; | ||
// } | ||
// message Config { | ||
// repeated Item items = 1 [experimental_map_key="name"]; | ||
// } | ||
// In this situation, the map key for Item will be set to "name". | ||
// TODO: Fully-implement this, then remove the "experimental_" prefix. | ||
optional string experimental_map_key = 9; | ||
|
||
// For Google-internal migration only. Do not use. | ||
optional bool weak = 10 [default=false]; | ||
|
||
|
||
// The parser stores options it doesn't recognize here. See above. | ||
repeated UninterpretedOption uninterpreted_option = 999; | ||
|
||
// Clients can define custom options in extensions of this message. See above. | ||
extensions 1000 to max; | ||
|
||
// reserved 4; // removed jtype | ||
} | ||
|
||
message OneofOptions { | ||
// The parser stores options it doesn't recognize here. See above. | ||
repeated UninterpretedOption uninterpreted_option = 999; | ||
|
||
|
@@ -474,6 +561,7 @@ message EnumOptions { | |
// is a formalization for deprecating enums. | ||
optional bool deprecated = 3 [default=false]; | ||
|
||
|
||
// The parser stores options it doesn't recognize here. See above. | ||
repeated UninterpretedOption uninterpreted_option = 999; | ||
|
||
|
@@ -528,6 +616,17 @@ message MethodOptions { | |
// this is a formalization for deprecating methods. | ||
optional bool deprecated = 33 [default=false]; | ||
|
||
// Is this method side-effect-free (or safe in HTTP parlance), or idempotent, | ||
// or neither? HTTP based RPC implementation may choose GET verb for safe | ||
// methods, and PUT verb for idempotent methods instead of the default POST. | ||
enum IdempotencyLevel { | ||
IDEMPOTENCY_UNKNOWN = 0; | ||
NO_SIDE_EFFECTS = 1; // implies idempotent | ||
IDEMPOTENT = 2; // idempotent, but may have side effects | ||
} | ||
optional IdempotencyLevel idempotency_level = | ||
34 [default=IDEMPOTENCY_UNKNOWN]; | ||
|
||
// The parser stores options it doesn't recognize here. See above. | ||
repeated UninterpretedOption uninterpreted_option = 999; | ||
|
||
|
@@ -654,6 +753,11 @@ message SourceCodeInfo { | |
// A series of line comments appearing on consecutive lines, with no other | ||
// tokens appearing on those lines, will be treated as a single comment. | ||
// | ||
// leading_detached_comments will keep paragraphs of comments that appear | ||
// before (but not connected to) the current element. Each paragraph, | ||
// separated by empty lines, will be one comment element in the repeated | ||
// field. | ||
// | ||
// Only the comment content is provided; comment markers (e.g. //) are | ||
// stripped out. For block comments, leading whitespace and an asterisk | ||
// will be stripped from the beginning of each line other than the first. | ||
|
@@ -674,14 +778,49 @@ message SourceCodeInfo { | |
// // Another line attached to qux. | ||
// optional double qux = 4; | ||
// | ||
// // Detached comment for corge. This is not leading or trailing comments | ||
// // to qux or corge because there are blank lines separating it from | ||
// // both. | ||
// | ||
// // Detached comment for corge paragraph 2. | ||
// | ||
// optional string corge = 5; | ||
// /* Block comment attached | ||
// * to corge. Leading asterisks | ||
// * will be removed. */ | ||
// /* Block comment attached to | ||
// * grault. */ | ||
// optional int32 grault = 6; | ||
// | ||
// // ignored detached comments. | ||
optional string leading_comments = 3; | ||
optional string trailing_comments = 4; | ||
repeated string leading_detached_comments = 6; | ||
} | ||
} | ||
|
||
// Describes the relationship between generated code and its original source | ||
// file. A GeneratedCodeInfo message is associated with only one generated | ||
// source file, but may contain references to different source .proto files. | ||
message GeneratedCodeInfo { | ||
// An Annotation connects some span of text in generated code to an element | ||
// of its generating .proto file. | ||
repeated Annotation annotation = 1; | ||
message Annotation { | ||
// Identifies the element in the original source .proto file. This field | ||
// is formatted the same as SourceCodeInfo.Location.path. | ||
repeated int32 path = 1 [packed=true]; | ||
|
||
// Identifies the filesystem path to the original source .proto. | ||
optional string source_file = 2; | ||
|
||
// Identifies the starting offset in bytes in the generated code | ||
// that relates to the identified object. | ||
optional int32 begin = 3; | ||
|
||
// Identifies the ending offset in bytes in the generated code that | ||
// relates to the identified offset. The end offset should be one past | ||
// the last relevant byte (so the length of the text = end - begin). | ||
optional int32 end = 4; | ||
} | ||
} |
Oops, something went wrong.