protobuffy 3.6.0 → 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.rubocop.yml +67 -0
- data/.rubocop_todo.yml +145 -0
- data/.travis.yml +25 -5
- data/CHANGES.md +55 -0
- data/CONTRIBUTING.md +1 -1
- data/LICENSE.txt +17 -9
- data/README.md +13 -12
- data/Rakefile +15 -11
- data/bin/protoc-gen-ruby +8 -3
- data/bin/rpc_server +1 -0
- data/examples/lib/example/reverse-client.rb +2 -2
- data/install-protobuf.sh +28 -0
- data/lib/protobuf.rb +57 -53
- data/lib/protobuf/cli.rb +94 -74
- data/lib/protobuf/code_generator.rb +60 -9
- data/lib/protobuf/decoder.rb +19 -65
- data/lib/protobuf/deprecation.rb +117 -0
- data/lib/protobuf/descriptors/google/protobuf/compiler/plugin.pb.rb +11 -1
- data/lib/protobuf/descriptors/google/protobuf/descriptor.pb.rb +55 -3
- data/lib/protobuf/encoder.rb +13 -53
- data/lib/protobuf/enum.rb +58 -63
- data/lib/protobuf/field.rb +4 -4
- data/lib/protobuf/field/base_field.rb +101 -173
- data/lib/protobuf/field/bool_field.rb +17 -11
- data/lib/protobuf/field/bytes_field.rb +21 -35
- data/lib/protobuf/field/double_field.rb +0 -1
- data/lib/protobuf/field/enum_field.rb +23 -22
- data/lib/protobuf/field/field_array.rb +5 -4
- data/lib/protobuf/field/fixed32_field.rb +1 -1
- data/lib/protobuf/field/fixed64_field.rb +0 -1
- data/lib/protobuf/field/float_field.rb +4 -1
- data/lib/protobuf/field/int32_field.rb +0 -1
- data/lib/protobuf/field/int64_field.rb +0 -1
- data/lib/protobuf/field/integer_field.rb +0 -1
- data/lib/protobuf/field/message_field.rb +13 -28
- data/lib/protobuf/field/sfixed32_field.rb +0 -1
- data/lib/protobuf/field/sfixed64_field.rb +0 -1
- data/lib/protobuf/field/signed_integer_field.rb +0 -1
- data/lib/protobuf/field/sint32_field.rb +0 -1
- data/lib/protobuf/field/sint64_field.rb +0 -1
- data/lib/protobuf/field/string_field.rb +2 -4
- data/lib/protobuf/field/uint32_field.rb +0 -1
- data/lib/protobuf/field/uint64_field.rb +0 -1
- data/lib/protobuf/field/varint_field.rb +30 -13
- data/lib/protobuf/generators/base.rb +30 -16
- data/lib/protobuf/generators/enum_generator.rb +6 -9
- data/lib/protobuf/generators/extension_generator.rb +1 -2
- data/lib/protobuf/generators/field_generator.rb +25 -13
- data/lib/protobuf/generators/file_generator.rb +157 -35
- data/lib/protobuf/generators/group_generator.rb +22 -17
- data/lib/protobuf/generators/message_generator.rb +13 -14
- data/lib/protobuf/generators/option_generator.rb +17 -0
- data/lib/protobuf/generators/printable.rb +12 -13
- data/lib/protobuf/generators/service_generator.rb +2 -3
- data/lib/protobuf/http.rb +2 -2
- data/lib/protobuf/lifecycle.rb +20 -33
- data/lib/protobuf/logging.rb +39 -0
- data/lib/protobuf/message.rb +114 -47
- data/lib/protobuf/message/fields.rb +170 -88
- data/lib/protobuf/message/serialization.rb +19 -18
- data/lib/protobuf/optionable.rb +53 -6
- data/lib/protobuf/rpc/buffer.rb +18 -19
- data/lib/protobuf/rpc/client.rb +22 -50
- data/lib/protobuf/rpc/connectors/base.rb +177 -12
- data/lib/protobuf/rpc/connectors/http.rb +14 -9
- data/lib/protobuf/rpc/connectors/ping.rb +89 -0
- data/lib/protobuf/rpc/connectors/socket.rb +13 -8
- data/lib/protobuf/rpc/connectors/zmq.rb +178 -73
- data/lib/protobuf/rpc/dynamic_discovery.pb.rb +4 -1
- data/lib/protobuf/rpc/env.rb +12 -12
- data/lib/protobuf/rpc/error.rb +3 -3
- data/lib/protobuf/rpc/error/client_error.rb +4 -4
- data/lib/protobuf/rpc/error/server_error.rb +9 -9
- data/lib/protobuf/rpc/middleware/exception_handler.rb +6 -2
- data/lib/protobuf/rpc/middleware/logger.rb +8 -4
- data/lib/protobuf/rpc/middleware/request_decoder.rb +17 -21
- data/lib/protobuf/rpc/middleware/response_encoder.rb +22 -27
- data/lib/protobuf/rpc/middleware/statsd.rb +3 -3
- data/lib/protobuf/rpc/rpc.pb.rb +4 -1
- data/lib/protobuf/rpc/server.rb +1 -1
- data/lib/protobuf/rpc/servers/http/server.rb +19 -17
- data/lib/protobuf/rpc/servers/socket/server.rb +78 -70
- data/lib/protobuf/rpc/servers/socket/worker.rb +4 -4
- data/lib/protobuf/rpc/servers/socket_runner.rb +27 -15
- data/lib/protobuf/rpc/servers/zmq/broker.rb +70 -31
- data/lib/protobuf/rpc/servers/zmq/server.rb +55 -47
- data/lib/protobuf/rpc/servers/zmq/util.rb +14 -13
- data/lib/protobuf/rpc/servers/zmq/worker.rb +16 -16
- data/lib/protobuf/rpc/servers/zmq_runner.rb +26 -7
- data/lib/protobuf/rpc/service.rb +21 -27
- data/lib/protobuf/rpc/service_directory.rb +43 -27
- data/lib/protobuf/rpc/service_dispatcher.rb +9 -10
- data/lib/protobuf/rpc/service_filters.rb +32 -55
- data/lib/protobuf/rpc/stat.rb +4 -8
- data/lib/protobuf/socket.rb +1 -2
- data/lib/protobuf/tasks/compile.rake +3 -4
- data/lib/protobuf/varint.rb +9 -0
- data/lib/protobuf/varint_pure.rb +13 -0
- data/lib/protobuf/version.rb +1 -1
- data/lib/protobuf/zmq.rb +2 -2
- data/proto/google/protobuf/descriptor.proto +190 -31
- data/protobuffy.gemspec +30 -17
- data/spec/benchmark/tasks.rb +27 -19
- data/spec/bin/protoc-gen-ruby_spec.rb +11 -6
- data/spec/encoding/all_types_spec.rb +96 -84
- data/spec/encoding/extreme_values_spec.rb +0 -0
- data/spec/functional/class_inheritance_spec.rb +52 -0
- data/spec/functional/code_generator_spec.rb +38 -0
- data/spec/functional/socket_server_spec.rb +15 -15
- data/spec/functional/zmq_server_spec.rb +29 -27
- data/spec/lib/protobuf/cli_spec.rb +82 -67
- data/spec/lib/protobuf/code_generator_spec.rb +37 -10
- data/spec/lib/protobuf/enum_spec.rb +77 -46
- data/spec/lib/protobuf/field/bool_field_spec.rb +91 -0
- data/spec/lib/protobuf/field/double_field_spec.rb +9 -0
- data/spec/lib/protobuf/field/enum_field_spec.rb +26 -0
- data/spec/lib/protobuf/field/field_array_spec.rb +69 -0
- data/spec/lib/protobuf/field/fixed32_field_spec.rb +7 -0
- data/spec/lib/protobuf/field/fixed64_field_spec.rb +7 -0
- data/spec/lib/protobuf/field/float_field_spec.rb +90 -0
- data/spec/lib/protobuf/field/int32_field_spec.rb +114 -1
- data/spec/lib/protobuf/field/int64_field_spec.rb +7 -0
- data/spec/lib/protobuf/field/message_field_spec.rb +132 -0
- data/spec/lib/protobuf/field/sfixed32_field_spec.rb +9 -0
- data/spec/lib/protobuf/field/sfixed64_field_spec.rb +9 -0
- data/spec/lib/protobuf/field/sint32_field_spec.rb +9 -0
- data/spec/lib/protobuf/field/sint64_field_spec.rb +9 -0
- data/spec/lib/protobuf/field/string_field_spec.rb +44 -11
- data/spec/lib/protobuf/field/uint32_field_spec.rb +7 -0
- data/spec/lib/protobuf/field/uint64_field_spec.rb +7 -0
- data/spec/lib/protobuf/field_spec.rb +4 -6
- data/spec/lib/protobuf/generators/base_spec.rb +80 -13
- data/spec/lib/protobuf/generators/enum_generator_spec.rb +35 -21
- data/spec/lib/protobuf/generators/extension_generator_spec.rb +12 -13
- data/spec/lib/protobuf/generators/field_generator_spec.rb +73 -21
- data/spec/lib/protobuf/generators/file_generator_spec.rb +89 -6
- data/spec/lib/protobuf/generators/service_generator_spec.rb +25 -13
- data/spec/lib/protobuf/lifecycle_spec.rb +25 -20
- data/spec/lib/protobuf/message_spec.rb +578 -79
- data/spec/lib/protobuf/optionable_spec.rb +202 -26
- data/spec/lib/protobuf/rpc/client_spec.rb +16 -16
- data/spec/lib/protobuf/rpc/connectors/base_spec.rb +167 -13
- data/spec/lib/protobuf/rpc/connectors/connector_spec.rb +4 -5
- data/spec/lib/protobuf/rpc/connectors/http_spec.rb +13 -11
- data/spec/lib/protobuf/rpc/connectors/ping_spec.rb +69 -0
- data/spec/lib/protobuf/rpc/connectors/socket_spec.rb +6 -7
- data/spec/lib/protobuf/rpc/connectors/zmq_spec.rb +35 -52
- data/spec/lib/protobuf/rpc/middleware/exception_handler_spec.rb +10 -10
- data/spec/lib/protobuf/rpc/middleware/logger_spec.rb +11 -11
- data/spec/lib/protobuf/rpc/middleware/request_decoder_spec.rb +23 -23
- data/spec/lib/protobuf/rpc/middleware/response_encoder_spec.rb +11 -11
- data/spec/lib/protobuf/rpc/middleware/statsd_spec.rb +6 -6
- data/spec/lib/protobuf/rpc/servers/http/server_spec.rb +47 -44
- data/spec/lib/protobuf/rpc/servers/socket_server_spec.rb +6 -6
- data/spec/lib/protobuf/rpc/servers/zmq/server_spec.rb +12 -10
- data/spec/lib/protobuf/rpc/servers/zmq/util_spec.rb +11 -11
- data/spec/lib/protobuf/rpc/servers/zmq/worker_spec.rb +7 -7
- data/spec/lib/protobuf/rpc/service_directory_spec.rb +47 -49
- data/spec/lib/protobuf/rpc/service_dispatcher_spec.rb +8 -25
- data/spec/lib/protobuf/rpc/service_filters_spec.rb +102 -69
- data/spec/lib/protobuf/rpc/service_spec.rb +37 -36
- data/spec/lib/protobuf/rpc/stat_spec.rb +7 -9
- data/spec/lib/protobuf/varint_spec.rb +29 -0
- data/spec/lib/protobuf_spec.rb +55 -28
- data/spec/spec_helper.rb +12 -27
- data/spec/support/all.rb +0 -1
- data/spec/support/packed_field.rb +4 -3
- data/spec/support/{test → protos}/all_types.data.bin +0 -0
- data/spec/support/{test → protos}/all_types.data.txt +0 -0
- data/spec/support/{test → protos}/enum.pb.rb +8 -4
- data/spec/support/{test → protos}/enum.proto +4 -1
- data/spec/support/{test → protos}/extreme_values.data.bin +0 -0
- data/spec/support/protos/google_unittest.bin +0 -0
- data/spec/support/protos/google_unittest.pb.rb +798 -0
- data/spec/support/{test → protos}/google_unittest.proto +237 -66
- data/spec/support/protos/google_unittest_custom_options.bin +0 -0
- data/spec/support/protos/google_unittest_custom_options.pb.rb +268 -0
- data/spec/support/protos/google_unittest_custom_options.proto +424 -0
- data/spec/support/protos/google_unittest_import.pb.rb +55 -0
- data/spec/support/{test → protos}/google_unittest_import.proto +19 -10
- data/spec/support/protos/google_unittest_import_public.pb.rb +31 -0
- data/spec/support/{test → protos}/google_unittest_import_public.proto +8 -5
- data/spec/support/{test → protos}/multi_field_extensions.pb.rb +5 -2
- data/spec/support/{test → protos}/multi_field_extensions.proto +2 -0
- data/spec/support/{test → protos}/resource.pb.rb +47 -11
- data/spec/support/{test → protos}/resource.proto +24 -1
- data/spec/support/resource_service.rb +23 -0
- data/spec/support/server.rb +32 -61
- metadata +119 -59
- data/lib/protobuf/deprecator.rb +0 -42
- data/lib/protobuf/logger.rb +0 -93
- data/lib/protobuf/rpc/connector.rb +0 -21
- data/lib/protobuf/rpc/connectors/common.rb +0 -172
- data/spec/data/data.bin +0 -3
- data/spec/data/types.bin +0 -0
- data/spec/lib/protobuf/logger_spec.rb +0 -145
- data/spec/lib/protobuf/rpc/connector_spec.rb +0 -26
- data/spec/lib/protobuf/rpc/connectors/common_spec.rb +0 -170
- data/spec/support/test/defaults.pb.rb +0 -25
- data/spec/support/test/defaults.proto +0 -9
- data/spec/support/test/extended.pb.rb +0 -22
- data/spec/support/test/extended.proto +0 -10
- data/spec/support/test/google_unittest.pb.rb +0 -543
- data/spec/support/test/google_unittest_import.pb.rb +0 -37
- data/spec/support/test/google_unittest_import_public.pb.rb +0 -8
- data/spec/support/test/resource_service.rb +0 -26
- data/spec/support/tolerance_matcher.rb +0 -40
data/lib/protobuf/socket.rb
CHANGED
@@ -15,8 +15,7 @@
|
|
15
15
|
# gem 'protobuf', :require => 'protobuf/socket'
|
16
16
|
#
|
17
17
|
require 'protobuf'
|
18
|
-
::Protobuf.connector_type = :socket
|
19
|
-
|
20
18
|
require 'protobuf/rpc/servers/socket/server'
|
21
19
|
require 'protobuf/rpc/connectors/socket'
|
22
20
|
|
21
|
+
::Protobuf.connector_type_class = ::Protobuf::Rpc::Connectors::Socket
|
@@ -3,7 +3,7 @@ require 'fileutils'
|
|
3
3
|
namespace :protobuf do
|
4
4
|
|
5
5
|
desc 'Clean & Compile the protobuf source to ruby classes. Pass PB_NO_CLEAN=1 if you do not want to force-clean first.'
|
6
|
-
task :compile, [
|
6
|
+
task :compile, [:package, :source, :destination, :plugin, :file_extension] do |_tasks, args|
|
7
7
|
args.with_defaults(:destination => 'lib')
|
8
8
|
args.with_defaults(:source => 'definitions')
|
9
9
|
args.with_defaults(:plugin => 'ruby')
|
@@ -18,8 +18,7 @@ namespace :protobuf do
|
|
18
18
|
command << "protoc"
|
19
19
|
command << "--#{args[:plugin]}_out=#{args[:destination]}"
|
20
20
|
command << "-I #{args[:source]}"
|
21
|
-
command << "#{args[:source]}/#{args[:package]}
|
22
|
-
command << "#{args[:source]}/#{args[:package]}/**/*.proto"
|
21
|
+
command << Dir["#{args[:source]}/#{args[:package]}/**/*.proto"].join(" ")
|
23
22
|
full_command = command.join(' ')
|
24
23
|
|
25
24
|
puts full_command
|
@@ -27,7 +26,7 @@ namespace :protobuf do
|
|
27
26
|
end
|
28
27
|
|
29
28
|
desc 'Clean the generated *.pb.rb files from the destination package. Pass PB_FORCE_CLEAN=1 to skip confirmation step.'
|
30
|
-
task :clean, [
|
29
|
+
task :clean, [:package, :destination, :file_extension] do |_task, args|
|
31
30
|
args.with_defaults(:destination => 'lib')
|
32
31
|
args.with_defaults(:file_extension => '.pb.rb')
|
33
32
|
|
data/lib/protobuf/version.rb
CHANGED
data/lib/protobuf/zmq.rb
CHANGED
@@ -14,8 +14,8 @@
|
|
14
14
|
# gem 'protobuf', :require => 'protobuf/zmq'
|
15
15
|
#
|
16
16
|
require 'protobuf'
|
17
|
-
Protobuf.connector_type = :zmq
|
18
|
-
|
19
17
|
require 'ffi-rzmq'
|
20
18
|
require 'protobuf/rpc/servers/zmq/server'
|
21
19
|
require 'protobuf/rpc/connectors/zmq'
|
20
|
+
|
21
|
+
Protobuf.connector_type_class = ::Protobuf::Rpc::Connectors::Zmq
|
@@ -1,6 +1,6 @@
|
|
1
1
|
// Protocol Buffers - Google's data interchange format
|
2
2
|
// Copyright 2008 Google Inc. All rights reserved.
|
3
|
-
//
|
3
|
+
// https://developers.google.com/protocol-buffers/
|
4
4
|
//
|
5
5
|
// Redistribution and use in source and binary forms, with or without
|
6
6
|
// modification, are permitted provided that the following conditions are
|
@@ -37,10 +37,14 @@
|
|
37
37
|
// without any other information (e.g. without reading its imports).
|
38
38
|
|
39
39
|
|
40
|
+
syntax = "proto2";
|
40
41
|
|
41
42
|
package google.protobuf;
|
43
|
+
option go_package = "descriptor";
|
42
44
|
option java_package = "com.google.protobuf";
|
43
45
|
option java_outer_classname = "DescriptorProtos";
|
46
|
+
option csharp_namespace = "Google.Protobuf.Reflection";
|
47
|
+
option objc_class_prefix = "GPB";
|
44
48
|
|
45
49
|
// descriptor.proto must be optimized for speed because reflection-based
|
46
50
|
// algorithms don't work during bootstrapping.
|
@@ -74,10 +78,14 @@ message FileDescriptorProto {
|
|
74
78
|
optional FileOptions options = 8;
|
75
79
|
|
76
80
|
// This field contains optional information about the original source code.
|
77
|
-
// You may safely remove this entire field
|
81
|
+
// You may safely remove this entire field without harming runtime
|
78
82
|
// functionality of the descriptors -- the information is needed only by
|
79
83
|
// development tools.
|
80
84
|
optional SourceCodeInfo source_code_info = 9;
|
85
|
+
|
86
|
+
// The syntax of the proto file.
|
87
|
+
// The supported values are "proto2" and "proto3".
|
88
|
+
optional string syntax = 12;
|
81
89
|
}
|
82
90
|
|
83
91
|
// Describes a message type.
|
@@ -96,7 +104,21 @@ message DescriptorProto {
|
|
96
104
|
}
|
97
105
|
repeated ExtensionRange extension_range = 5;
|
98
106
|
|
107
|
+
repeated OneofDescriptorProto oneof_decl = 8;
|
108
|
+
|
99
109
|
optional MessageOptions options = 7;
|
110
|
+
|
111
|
+
// Range of reserved tag numbers. Reserved tag numbers may not be used by
|
112
|
+
// fields or extension ranges in the same message. Reserved ranges may
|
113
|
+
// not overlap.
|
114
|
+
message ReservedRange {
|
115
|
+
optional int32 start = 1; // Inclusive.
|
116
|
+
optional int32 end = 2; // Exclusive.
|
117
|
+
}
|
118
|
+
repeated ReservedRange reserved_range = 9;
|
119
|
+
// Reserved field names, which may not be used by fields in the same message.
|
120
|
+
// A given name may only be reserved once.
|
121
|
+
repeated string reserved_name = 10;
|
100
122
|
}
|
101
123
|
|
102
124
|
// Describes a field within a message.
|
@@ -143,7 +165,7 @@ message FieldDescriptorProto {
|
|
143
165
|
optional Label label = 4;
|
144
166
|
|
145
167
|
// If type_name is set, this need not be set. If both this and type_name
|
146
|
-
// are set, this must be
|
168
|
+
// are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
|
147
169
|
optional Type type = 5;
|
148
170
|
|
149
171
|
// For message and enum types, this is the name of the type. If the name
|
@@ -164,9 +186,24 @@ message FieldDescriptorProto {
|
|
164
186
|
// TODO(kenton): Base-64 encode?
|
165
187
|
optional string default_value = 7;
|
166
188
|
|
189
|
+
// If set, gives the index of a oneof in the containing type's oneof_decl
|
190
|
+
// list. This field is a member of that oneof.
|
191
|
+
optional int32 oneof_index = 9;
|
192
|
+
|
193
|
+
// JSON name of this field. The value is set by protocol compiler. If the
|
194
|
+
// user has set a "json_name" option on this field, that option's value
|
195
|
+
// will be used. Otherwise, it's deduced from the field's name by converting
|
196
|
+
// it to camelCase.
|
197
|
+
optional string json_name = 10;
|
198
|
+
|
167
199
|
optional FieldOptions options = 8;
|
168
200
|
}
|
169
201
|
|
202
|
+
// Describes a oneof.
|
203
|
+
message OneofDescriptorProto {
|
204
|
+
optional string name = 1;
|
205
|
+
}
|
206
|
+
|
170
207
|
// Describes an enum type.
|
171
208
|
message EnumDescriptorProto {
|
172
209
|
optional string name = 1;
|
@@ -202,6 +239,11 @@ message MethodDescriptorProto {
|
|
202
239
|
optional string output_type = 3;
|
203
240
|
|
204
241
|
optional MethodOptions options = 4;
|
242
|
+
|
243
|
+
// Identifies if client streams multiple client messages
|
244
|
+
optional bool client_streaming = 5 [default=false];
|
245
|
+
// Identifies if server streams multiple server messages
|
246
|
+
optional bool server_streaming = 6 [default=false];
|
205
247
|
}
|
206
248
|
|
207
249
|
|
@@ -228,12 +270,12 @@ message MethodDescriptorProto {
|
|
228
270
|
// * For options which will be published and used publicly by multiple
|
229
271
|
// independent entities, e-mail protobuf-global-extension-registry@google.com
|
230
272
|
// to reserve extension numbers. Simply provide your project name (e.g.
|
231
|
-
//
|
232
|
-
// to explain how you intend to use them. Usually you only need one
|
233
|
-
// number. You can declare multiple options with only one extension
|
234
|
-
// putting them in a sub-message. See the Custom Options section of
|
235
|
-
// for examples:
|
236
|
-
//
|
273
|
+
// Objective-C plugin) and your project website (if available) -- there's no
|
274
|
+
// need to explain how you intend to use them. Usually you only need one
|
275
|
+
// extension number. You can declare multiple options with only one extension
|
276
|
+
// number by putting them in a sub-message. See the Custom Options section of
|
277
|
+
// the docs for examples:
|
278
|
+
// https://developers.google.com/protocol-buffers/docs/proto#options
|
237
279
|
// If this turns out to be popular, a web service will be set up
|
238
280
|
// to automatically assign option numbers.
|
239
281
|
|
@@ -263,11 +305,28 @@ message FileOptions {
|
|
263
305
|
optional bool java_multiple_files = 10 [default=false];
|
264
306
|
|
265
307
|
// If set true, then the Java code generator will generate equals() and
|
266
|
-
// hashCode() methods for all messages defined in the .proto file.
|
267
|
-
//
|
268
|
-
//
|
308
|
+
// hashCode() methods for all messages defined in the .proto file.
|
309
|
+
// This increases generated code size, potentially substantially for large
|
310
|
+
// protos, which may harm a memory-constrained application.
|
311
|
+
// - In the full runtime this is a speed optimization, as the
|
312
|
+
// AbstractMessage base class includes reflection-based implementations of
|
313
|
+
// these methods.
|
314
|
+
// - In the lite runtime, setting this option changes the semantics of
|
315
|
+
// equals() and hashCode() to more closely match those of the full runtime;
|
316
|
+
// the generated methods compute their results based on field values rather
|
317
|
+
// than object identity. (Implementations should not assume that hashcodes
|
318
|
+
// will be consistent across runtimes or versions of the protocol compiler.)
|
269
319
|
optional bool java_generate_equals_and_hash = 20 [default=false];
|
270
320
|
|
321
|
+
// If set true, then the Java2 code generator will generate code that
|
322
|
+
// throws an exception whenever an attempt is made to assign a non-UTF-8
|
323
|
+
// byte sequence to a string field.
|
324
|
+
// Message reflection will do the same.
|
325
|
+
// However, an extension field still accepts non-UTF-8 byte sequences.
|
326
|
+
// This option has no effect on when used with the lite runtime.
|
327
|
+
optional bool java_string_check_utf8 = 27 [default=false];
|
328
|
+
|
329
|
+
|
271
330
|
// Generated classes can be optimized for speed or code size.
|
272
331
|
enum OptimizeMode {
|
273
332
|
SPEED = 1; // Generate complete code for parsing, serialization,
|
@@ -278,7 +337,10 @@ message FileOptions {
|
|
278
337
|
optional OptimizeMode optimize_for = 9 [default=SPEED];
|
279
338
|
|
280
339
|
// Sets the Go package where structs generated from this .proto will be
|
281
|
-
// placed.
|
340
|
+
// placed. If omitted, the Go package will be derived from the following:
|
341
|
+
// - The basename of the package import path, if provided.
|
342
|
+
// - Otherwise, the package statement in the .proto file, if present.
|
343
|
+
// - Otherwise, the basename of the .proto file, without extension.
|
282
344
|
optional string go_package = 11;
|
283
345
|
|
284
346
|
|
@@ -287,7 +349,7 @@ message FileOptions {
|
|
287
349
|
// are not specific to any particular RPC system. They are generated by the
|
288
350
|
// main code generators in each language (without additional plugins).
|
289
351
|
// Generic services were the only kind of service generation supported by
|
290
|
-
// early versions of
|
352
|
+
// early versions of google.protobuf.
|
291
353
|
//
|
292
354
|
// Generic services are now considered deprecated in favor of using plugins
|
293
355
|
// that generate code specific to your particular RPC system. Therefore,
|
@@ -297,6 +359,28 @@ message FileOptions {
|
|
297
359
|
optional bool java_generic_services = 17 [default=false];
|
298
360
|
optional bool py_generic_services = 18 [default=false];
|
299
361
|
|
362
|
+
// Is this file deprecated?
|
363
|
+
// Depending on the target platform, this can emit Deprecated annotations
|
364
|
+
// for everything in the file, or it will be completely ignored; in the very
|
365
|
+
// least, this is a formalization for deprecating files.
|
366
|
+
optional bool deprecated = 23 [default=false];
|
367
|
+
|
368
|
+
// Enables the use of arenas for the proto messages in this file. This applies
|
369
|
+
// only to generated classes for C++.
|
370
|
+
optional bool cc_enable_arenas = 31 [default=false];
|
371
|
+
|
372
|
+
|
373
|
+
// Sets the objective c class prefix which is prepended to all objective c
|
374
|
+
// generated classes from this .proto. There is no default.
|
375
|
+
optional string objc_class_prefix = 36;
|
376
|
+
|
377
|
+
// Namespace for generated classes; defaults to the package.
|
378
|
+
optional string csharp_namespace = 37;
|
379
|
+
|
380
|
+
// Whether the nano proto compiler should generate in the deprecated non-nano
|
381
|
+
// suffixed package.
|
382
|
+
optional bool javanano_use_deprecated_package = 38;
|
383
|
+
|
300
384
|
// The parser stores options it doesn't recognize here. See above.
|
301
385
|
repeated UninterpretedOption uninterpreted_option = 999;
|
302
386
|
|
@@ -330,6 +414,35 @@ message MessageOptions {
|
|
330
414
|
// from proto1 easier; new code should avoid fields named "descriptor".
|
331
415
|
optional bool no_standard_descriptor_accessor = 2 [default=false];
|
332
416
|
|
417
|
+
// Is this message deprecated?
|
418
|
+
// Depending on the target platform, this can emit Deprecated annotations
|
419
|
+
// for the message, or it will be completely ignored; in the very least,
|
420
|
+
// this is a formalization for deprecating messages.
|
421
|
+
optional bool deprecated = 3 [default=false];
|
422
|
+
|
423
|
+
// Whether the message is an automatically generated map entry type for the
|
424
|
+
// maps field.
|
425
|
+
//
|
426
|
+
// For maps fields:
|
427
|
+
// map<KeyType, ValueType> map_field = 1;
|
428
|
+
// The parsed descriptor looks like:
|
429
|
+
// message MapFieldEntry {
|
430
|
+
// option map_entry = true;
|
431
|
+
// optional KeyType key = 1;
|
432
|
+
// optional ValueType value = 2;
|
433
|
+
// }
|
434
|
+
// repeated MapFieldEntry map_field = 1;
|
435
|
+
//
|
436
|
+
// Implementations may choose not to generate the map_entry=true message, but
|
437
|
+
// use a native map in the target language to hold the keys and values.
|
438
|
+
// The reflection APIs in such implementions still need to work as
|
439
|
+
// if the field is a repeated message field.
|
440
|
+
//
|
441
|
+
// NOTE: Do not set the option in .proto files. Always use the maps syntax
|
442
|
+
// instead. The option should only be implicitly set by the proto compiler
|
443
|
+
// parser.
|
444
|
+
optional bool map_entry = 7;
|
445
|
+
|
333
446
|
// The parser stores options it doesn't recognize here. See above.
|
334
447
|
repeated UninterpretedOption uninterpreted_option = 999;
|
335
448
|
|
@@ -354,10 +467,31 @@ message FieldOptions {
|
|
354
467
|
// The packed option can be enabled for repeated primitive fields to enable
|
355
468
|
// a more efficient representation on the wire. Rather than repeatedly
|
356
469
|
// writing the tag and type for each element, the entire array is encoded as
|
357
|
-
// a single length-delimited blob.
|
470
|
+
// a single length-delimited blob. In proto3, only explicit setting it to
|
471
|
+
// false will avoid using packed encoding.
|
358
472
|
optional bool packed = 2;
|
359
473
|
|
360
474
|
|
475
|
+
// The jstype option determines the JavaScript type used for values of the
|
476
|
+
// field. The option is permitted only for 64 bit integral and fixed types
|
477
|
+
// (int64, uint64, sint64, fixed64, sfixed64). By default these types are
|
478
|
+
// represented as JavaScript strings. This avoids loss of precision that can
|
479
|
+
// happen when a large value is converted to a floating point JavaScript
|
480
|
+
// numbers. Specifying JS_NUMBER for the jstype causes the generated
|
481
|
+
// JavaScript code to use the JavaScript "number" type instead of strings.
|
482
|
+
// This option is an enum to permit additional types to be added,
|
483
|
+
// e.g. goog.math.Integer.
|
484
|
+
optional JSType jstype = 6 [default = JS_NORMAL];
|
485
|
+
enum JSType {
|
486
|
+
// Use the default type.
|
487
|
+
JS_NORMAL = 0;
|
488
|
+
|
489
|
+
// Use JavaScript strings.
|
490
|
+
JS_STRING = 1;
|
491
|
+
|
492
|
+
// Use JavaScript numbers.
|
493
|
+
JS_NUMBER = 2;
|
494
|
+
}
|
361
495
|
|
362
496
|
// Should this field be parsed lazily? Lazy applies only to message-type
|
363
497
|
// fields. It means that when the outer message is initially parsed, the
|
@@ -395,23 +529,10 @@ message FieldOptions {
|
|
395
529
|
// is a formalization for deprecating fields.
|
396
530
|
optional bool deprecated = 3 [default=false];
|
397
531
|
|
398
|
-
// EXPERIMENTAL. DO NOT USE.
|
399
|
-
// For "map" fields, the name of the field in the enclosed type that
|
400
|
-
// is the key for this map. For example, suppose we have:
|
401
|
-
// message Item {
|
402
|
-
// required string name = 1;
|
403
|
-
// required string value = 2;
|
404
|
-
// }
|
405
|
-
// message Config {
|
406
|
-
// repeated Item items = 1 [experimental_map_key="name"];
|
407
|
-
// }
|
408
|
-
// In this situation, the map key for Item will be set to "name".
|
409
|
-
// TODO: Fully-implement this, then remove the "experimental_" prefix.
|
410
|
-
optional string experimental_map_key = 9;
|
411
|
-
|
412
532
|
// For Google-internal migration only. Do not use.
|
413
533
|
optional bool weak = 10 [default=false];
|
414
534
|
|
535
|
+
|
415
536
|
// The parser stores options it doesn't recognize here. See above.
|
416
537
|
repeated UninterpretedOption uninterpreted_option = 999;
|
417
538
|
|
@@ -421,9 +542,15 @@ message FieldOptions {
|
|
421
542
|
|
422
543
|
message EnumOptions {
|
423
544
|
|
424
|
-
// Set this option to
|
545
|
+
// Set this option to true to allow mapping different tag names to the same
|
425
546
|
// value.
|
426
|
-
optional bool allow_alias = 2
|
547
|
+
optional bool allow_alias = 2;
|
548
|
+
|
549
|
+
// Is this enum deprecated?
|
550
|
+
// Depending on the target platform, this can emit Deprecated annotations
|
551
|
+
// for the enum, or it will be completely ignored; in the very least, this
|
552
|
+
// is a formalization for deprecating enums.
|
553
|
+
optional bool deprecated = 3 [default=false];
|
427
554
|
|
428
555
|
// The parser stores options it doesn't recognize here. See above.
|
429
556
|
repeated UninterpretedOption uninterpreted_option = 999;
|
@@ -433,6 +560,12 @@ message EnumOptions {
|
|
433
560
|
}
|
434
561
|
|
435
562
|
message EnumValueOptions {
|
563
|
+
// Is this enum value deprecated?
|
564
|
+
// Depending on the target platform, this can emit Deprecated annotations
|
565
|
+
// for the enum value, or it will be completely ignored; in the very least,
|
566
|
+
// this is a formalization for deprecating enum values.
|
567
|
+
optional bool deprecated = 1 [default=false];
|
568
|
+
|
436
569
|
// The parser stores options it doesn't recognize here. See above.
|
437
570
|
repeated UninterpretedOption uninterpreted_option = 999;
|
438
571
|
|
@@ -447,6 +580,12 @@ message ServiceOptions {
|
|
447
580
|
// we were already using them long before we decided to release Protocol
|
448
581
|
// Buffers.
|
449
582
|
|
583
|
+
// Is this service deprecated?
|
584
|
+
// Depending on the target platform, this can emit Deprecated annotations
|
585
|
+
// for the service, or it will be completely ignored; in the very least,
|
586
|
+
// this is a formalization for deprecating services.
|
587
|
+
optional bool deprecated = 33 [default=false];
|
588
|
+
|
450
589
|
// The parser stores options it doesn't recognize here. See above.
|
451
590
|
repeated UninterpretedOption uninterpreted_option = 999;
|
452
591
|
|
@@ -461,6 +600,12 @@ message MethodOptions {
|
|
461
600
|
// we were already using them long before we decided to release Protocol
|
462
601
|
// Buffers.
|
463
602
|
|
603
|
+
// Is this method deprecated?
|
604
|
+
// Depending on the target platform, this can emit Deprecated annotations
|
605
|
+
// for the method, or it will be completely ignored; in the very least,
|
606
|
+
// this is a formalization for deprecating methods.
|
607
|
+
optional bool deprecated = 33 [default=false];
|
608
|
+
|
464
609
|
// The parser stores options it doesn't recognize here. See above.
|
465
610
|
repeated UninterpretedOption uninterpreted_option = 999;
|
466
611
|
|
@@ -587,6 +732,11 @@ message SourceCodeInfo {
|
|
587
732
|
// A series of line comments appearing on consecutive lines, with no other
|
588
733
|
// tokens appearing on those lines, will be treated as a single comment.
|
589
734
|
//
|
735
|
+
// leading_detached_comments will keep paragraphs of comments that appear
|
736
|
+
// before (but not connected to) the current element. Each paragraph,
|
737
|
+
// separated by empty lines, will be one comment element in the repeated
|
738
|
+
// field.
|
739
|
+
//
|
590
740
|
// Only the comment content is provided; comment markers (e.g. //) are
|
591
741
|
// stripped out. For block comments, leading whitespace and an asterisk
|
592
742
|
// will be stripped from the beginning of each line other than the first.
|
@@ -607,6 +757,12 @@ message SourceCodeInfo {
|
|
607
757
|
// // Another line attached to qux.
|
608
758
|
// optional double qux = 4;
|
609
759
|
//
|
760
|
+
// // Detached comment for corge. This is not leading or trailing comments
|
761
|
+
// // to qux or corge because there are blank lines separating it from
|
762
|
+
// // both.
|
763
|
+
//
|
764
|
+
// // Detached comment for corge paragraph 2.
|
765
|
+
//
|
610
766
|
// optional string corge = 5;
|
611
767
|
// /* Block comment attached
|
612
768
|
// * to corge. Leading asterisks
|
@@ -614,7 +770,10 @@ message SourceCodeInfo {
|
|
614
770
|
// /* Block comment attached to
|
615
771
|
// * grault. */
|
616
772
|
// optional int32 grault = 6;
|
773
|
+
//
|
774
|
+
// // ignored detached comments.
|
617
775
|
optional string leading_comments = 3;
|
618
776
|
optional string trailing_comments = 4;
|
777
|
+
repeated string leading_detached_comments = 6;
|
619
778
|
}
|
620
779
|
}
|