protobuffy 3.6.0 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (209) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +67 -0
  4. data/.rubocop_todo.yml +145 -0
  5. data/.travis.yml +25 -5
  6. data/CHANGES.md +55 -0
  7. data/CONTRIBUTING.md +1 -1
  8. data/LICENSE.txt +17 -9
  9. data/README.md +13 -12
  10. data/Rakefile +15 -11
  11. data/bin/protoc-gen-ruby +8 -3
  12. data/bin/rpc_server +1 -0
  13. data/examples/lib/example/reverse-client.rb +2 -2
  14. data/install-protobuf.sh +28 -0
  15. data/lib/protobuf.rb +57 -53
  16. data/lib/protobuf/cli.rb +94 -74
  17. data/lib/protobuf/code_generator.rb +60 -9
  18. data/lib/protobuf/decoder.rb +19 -65
  19. data/lib/protobuf/deprecation.rb +117 -0
  20. data/lib/protobuf/descriptors/google/protobuf/compiler/plugin.pb.rb +11 -1
  21. data/lib/protobuf/descriptors/google/protobuf/descriptor.pb.rb +55 -3
  22. data/lib/protobuf/encoder.rb +13 -53
  23. data/lib/protobuf/enum.rb +58 -63
  24. data/lib/protobuf/field.rb +4 -4
  25. data/lib/protobuf/field/base_field.rb +101 -173
  26. data/lib/protobuf/field/bool_field.rb +17 -11
  27. data/lib/protobuf/field/bytes_field.rb +21 -35
  28. data/lib/protobuf/field/double_field.rb +0 -1
  29. data/lib/protobuf/field/enum_field.rb +23 -22
  30. data/lib/protobuf/field/field_array.rb +5 -4
  31. data/lib/protobuf/field/fixed32_field.rb +1 -1
  32. data/lib/protobuf/field/fixed64_field.rb +0 -1
  33. data/lib/protobuf/field/float_field.rb +4 -1
  34. data/lib/protobuf/field/int32_field.rb +0 -1
  35. data/lib/protobuf/field/int64_field.rb +0 -1
  36. data/lib/protobuf/field/integer_field.rb +0 -1
  37. data/lib/protobuf/field/message_field.rb +13 -28
  38. data/lib/protobuf/field/sfixed32_field.rb +0 -1
  39. data/lib/protobuf/field/sfixed64_field.rb +0 -1
  40. data/lib/protobuf/field/signed_integer_field.rb +0 -1
  41. data/lib/protobuf/field/sint32_field.rb +0 -1
  42. data/lib/protobuf/field/sint64_field.rb +0 -1
  43. data/lib/protobuf/field/string_field.rb +2 -4
  44. data/lib/protobuf/field/uint32_field.rb +0 -1
  45. data/lib/protobuf/field/uint64_field.rb +0 -1
  46. data/lib/protobuf/field/varint_field.rb +30 -13
  47. data/lib/protobuf/generators/base.rb +30 -16
  48. data/lib/protobuf/generators/enum_generator.rb +6 -9
  49. data/lib/protobuf/generators/extension_generator.rb +1 -2
  50. data/lib/protobuf/generators/field_generator.rb +25 -13
  51. data/lib/protobuf/generators/file_generator.rb +157 -35
  52. data/lib/protobuf/generators/group_generator.rb +22 -17
  53. data/lib/protobuf/generators/message_generator.rb +13 -14
  54. data/lib/protobuf/generators/option_generator.rb +17 -0
  55. data/lib/protobuf/generators/printable.rb +12 -13
  56. data/lib/protobuf/generators/service_generator.rb +2 -3
  57. data/lib/protobuf/http.rb +2 -2
  58. data/lib/protobuf/lifecycle.rb +20 -33
  59. data/lib/protobuf/logging.rb +39 -0
  60. data/lib/protobuf/message.rb +114 -47
  61. data/lib/protobuf/message/fields.rb +170 -88
  62. data/lib/protobuf/message/serialization.rb +19 -18
  63. data/lib/protobuf/optionable.rb +53 -6
  64. data/lib/protobuf/rpc/buffer.rb +18 -19
  65. data/lib/protobuf/rpc/client.rb +22 -50
  66. data/lib/protobuf/rpc/connectors/base.rb +177 -12
  67. data/lib/protobuf/rpc/connectors/http.rb +14 -9
  68. data/lib/protobuf/rpc/connectors/ping.rb +89 -0
  69. data/lib/protobuf/rpc/connectors/socket.rb +13 -8
  70. data/lib/protobuf/rpc/connectors/zmq.rb +178 -73
  71. data/lib/protobuf/rpc/dynamic_discovery.pb.rb +4 -1
  72. data/lib/protobuf/rpc/env.rb +12 -12
  73. data/lib/protobuf/rpc/error.rb +3 -3
  74. data/lib/protobuf/rpc/error/client_error.rb +4 -4
  75. data/lib/protobuf/rpc/error/server_error.rb +9 -9
  76. data/lib/protobuf/rpc/middleware/exception_handler.rb +6 -2
  77. data/lib/protobuf/rpc/middleware/logger.rb +8 -4
  78. data/lib/protobuf/rpc/middleware/request_decoder.rb +17 -21
  79. data/lib/protobuf/rpc/middleware/response_encoder.rb +22 -27
  80. data/lib/protobuf/rpc/middleware/statsd.rb +3 -3
  81. data/lib/protobuf/rpc/rpc.pb.rb +4 -1
  82. data/lib/protobuf/rpc/server.rb +1 -1
  83. data/lib/protobuf/rpc/servers/http/server.rb +19 -17
  84. data/lib/protobuf/rpc/servers/socket/server.rb +78 -70
  85. data/lib/protobuf/rpc/servers/socket/worker.rb +4 -4
  86. data/lib/protobuf/rpc/servers/socket_runner.rb +27 -15
  87. data/lib/protobuf/rpc/servers/zmq/broker.rb +70 -31
  88. data/lib/protobuf/rpc/servers/zmq/server.rb +55 -47
  89. data/lib/protobuf/rpc/servers/zmq/util.rb +14 -13
  90. data/lib/protobuf/rpc/servers/zmq/worker.rb +16 -16
  91. data/lib/protobuf/rpc/servers/zmq_runner.rb +26 -7
  92. data/lib/protobuf/rpc/service.rb +21 -27
  93. data/lib/protobuf/rpc/service_directory.rb +43 -27
  94. data/lib/protobuf/rpc/service_dispatcher.rb +9 -10
  95. data/lib/protobuf/rpc/service_filters.rb +32 -55
  96. data/lib/protobuf/rpc/stat.rb +4 -8
  97. data/lib/protobuf/socket.rb +1 -2
  98. data/lib/protobuf/tasks/compile.rake +3 -4
  99. data/lib/protobuf/varint.rb +9 -0
  100. data/lib/protobuf/varint_pure.rb +13 -0
  101. data/lib/protobuf/version.rb +1 -1
  102. data/lib/protobuf/zmq.rb +2 -2
  103. data/proto/google/protobuf/descriptor.proto +190 -31
  104. data/protobuffy.gemspec +30 -17
  105. data/spec/benchmark/tasks.rb +27 -19
  106. data/spec/bin/protoc-gen-ruby_spec.rb +11 -6
  107. data/spec/encoding/all_types_spec.rb +96 -84
  108. data/spec/encoding/extreme_values_spec.rb +0 -0
  109. data/spec/functional/class_inheritance_spec.rb +52 -0
  110. data/spec/functional/code_generator_spec.rb +38 -0
  111. data/spec/functional/socket_server_spec.rb +15 -15
  112. data/spec/functional/zmq_server_spec.rb +29 -27
  113. data/spec/lib/protobuf/cli_spec.rb +82 -67
  114. data/spec/lib/protobuf/code_generator_spec.rb +37 -10
  115. data/spec/lib/protobuf/enum_spec.rb +77 -46
  116. data/spec/lib/protobuf/field/bool_field_spec.rb +91 -0
  117. data/spec/lib/protobuf/field/double_field_spec.rb +9 -0
  118. data/spec/lib/protobuf/field/enum_field_spec.rb +26 -0
  119. data/spec/lib/protobuf/field/field_array_spec.rb +69 -0
  120. data/spec/lib/protobuf/field/fixed32_field_spec.rb +7 -0
  121. data/spec/lib/protobuf/field/fixed64_field_spec.rb +7 -0
  122. data/spec/lib/protobuf/field/float_field_spec.rb +90 -0
  123. data/spec/lib/protobuf/field/int32_field_spec.rb +114 -1
  124. data/spec/lib/protobuf/field/int64_field_spec.rb +7 -0
  125. data/spec/lib/protobuf/field/message_field_spec.rb +132 -0
  126. data/spec/lib/protobuf/field/sfixed32_field_spec.rb +9 -0
  127. data/spec/lib/protobuf/field/sfixed64_field_spec.rb +9 -0
  128. data/spec/lib/protobuf/field/sint32_field_spec.rb +9 -0
  129. data/spec/lib/protobuf/field/sint64_field_spec.rb +9 -0
  130. data/spec/lib/protobuf/field/string_field_spec.rb +44 -11
  131. data/spec/lib/protobuf/field/uint32_field_spec.rb +7 -0
  132. data/spec/lib/protobuf/field/uint64_field_spec.rb +7 -0
  133. data/spec/lib/protobuf/field_spec.rb +4 -6
  134. data/spec/lib/protobuf/generators/base_spec.rb +80 -13
  135. data/spec/lib/protobuf/generators/enum_generator_spec.rb +35 -21
  136. data/spec/lib/protobuf/generators/extension_generator_spec.rb +12 -13
  137. data/spec/lib/protobuf/generators/field_generator_spec.rb +73 -21
  138. data/spec/lib/protobuf/generators/file_generator_spec.rb +89 -6
  139. data/spec/lib/protobuf/generators/service_generator_spec.rb +25 -13
  140. data/spec/lib/protobuf/lifecycle_spec.rb +25 -20
  141. data/spec/lib/protobuf/message_spec.rb +578 -79
  142. data/spec/lib/protobuf/optionable_spec.rb +202 -26
  143. data/spec/lib/protobuf/rpc/client_spec.rb +16 -16
  144. data/spec/lib/protobuf/rpc/connectors/base_spec.rb +167 -13
  145. data/spec/lib/protobuf/rpc/connectors/connector_spec.rb +4 -5
  146. data/spec/lib/protobuf/rpc/connectors/http_spec.rb +13 -11
  147. data/spec/lib/protobuf/rpc/connectors/ping_spec.rb +69 -0
  148. data/spec/lib/protobuf/rpc/connectors/socket_spec.rb +6 -7
  149. data/spec/lib/protobuf/rpc/connectors/zmq_spec.rb +35 -52
  150. data/spec/lib/protobuf/rpc/middleware/exception_handler_spec.rb +10 -10
  151. data/spec/lib/protobuf/rpc/middleware/logger_spec.rb +11 -11
  152. data/spec/lib/protobuf/rpc/middleware/request_decoder_spec.rb +23 -23
  153. data/spec/lib/protobuf/rpc/middleware/response_encoder_spec.rb +11 -11
  154. data/spec/lib/protobuf/rpc/middleware/statsd_spec.rb +6 -6
  155. data/spec/lib/protobuf/rpc/servers/http/server_spec.rb +47 -44
  156. data/spec/lib/protobuf/rpc/servers/socket_server_spec.rb +6 -6
  157. data/spec/lib/protobuf/rpc/servers/zmq/server_spec.rb +12 -10
  158. data/spec/lib/protobuf/rpc/servers/zmq/util_spec.rb +11 -11
  159. data/spec/lib/protobuf/rpc/servers/zmq/worker_spec.rb +7 -7
  160. data/spec/lib/protobuf/rpc/service_directory_spec.rb +47 -49
  161. data/spec/lib/protobuf/rpc/service_dispatcher_spec.rb +8 -25
  162. data/spec/lib/protobuf/rpc/service_filters_spec.rb +102 -69
  163. data/spec/lib/protobuf/rpc/service_spec.rb +37 -36
  164. data/spec/lib/protobuf/rpc/stat_spec.rb +7 -9
  165. data/spec/lib/protobuf/varint_spec.rb +29 -0
  166. data/spec/lib/protobuf_spec.rb +55 -28
  167. data/spec/spec_helper.rb +12 -27
  168. data/spec/support/all.rb +0 -1
  169. data/spec/support/packed_field.rb +4 -3
  170. data/spec/support/{test → protos}/all_types.data.bin +0 -0
  171. data/spec/support/{test → protos}/all_types.data.txt +0 -0
  172. data/spec/support/{test → protos}/enum.pb.rb +8 -4
  173. data/spec/support/{test → protos}/enum.proto +4 -1
  174. data/spec/support/{test → protos}/extreme_values.data.bin +0 -0
  175. data/spec/support/protos/google_unittest.bin +0 -0
  176. data/spec/support/protos/google_unittest.pb.rb +798 -0
  177. data/spec/support/{test → protos}/google_unittest.proto +237 -66
  178. data/spec/support/protos/google_unittest_custom_options.bin +0 -0
  179. data/spec/support/protos/google_unittest_custom_options.pb.rb +268 -0
  180. data/spec/support/protos/google_unittest_custom_options.proto +424 -0
  181. data/spec/support/protos/google_unittest_import.pb.rb +55 -0
  182. data/spec/support/{test → protos}/google_unittest_import.proto +19 -10
  183. data/spec/support/protos/google_unittest_import_public.pb.rb +31 -0
  184. data/spec/support/{test → protos}/google_unittest_import_public.proto +8 -5
  185. data/spec/support/{test → protos}/multi_field_extensions.pb.rb +5 -2
  186. data/spec/support/{test → protos}/multi_field_extensions.proto +2 -0
  187. data/spec/support/{test → protos}/resource.pb.rb +47 -11
  188. data/spec/support/{test → protos}/resource.proto +24 -1
  189. data/spec/support/resource_service.rb +23 -0
  190. data/spec/support/server.rb +32 -61
  191. metadata +119 -59
  192. data/lib/protobuf/deprecator.rb +0 -42
  193. data/lib/protobuf/logger.rb +0 -93
  194. data/lib/protobuf/rpc/connector.rb +0 -21
  195. data/lib/protobuf/rpc/connectors/common.rb +0 -172
  196. data/spec/data/data.bin +0 -3
  197. data/spec/data/types.bin +0 -0
  198. data/spec/lib/protobuf/logger_spec.rb +0 -145
  199. data/spec/lib/protobuf/rpc/connector_spec.rb +0 -26
  200. data/spec/lib/protobuf/rpc/connectors/common_spec.rb +0 -170
  201. data/spec/support/test/defaults.pb.rb +0 -25
  202. data/spec/support/test/defaults.proto +0 -9
  203. data/spec/support/test/extended.pb.rb +0 -22
  204. data/spec/support/test/extended.proto +0 -10
  205. data/spec/support/test/google_unittest.pb.rb +0 -543
  206. data/spec/support/test/google_unittest_import.pb.rb +0 -37
  207. data/spec/support/test/google_unittest_import_public.pb.rb +0 -8
  208. data/spec/support/test/resource_service.rb +0 -26
  209. data/spec/support/tolerance_matcher.rb +0 -40
@@ -1,3 +1,4 @@
1
+ require 'active_support/core_ext/module/aliasing'
1
2
  require 'protobuf/generators/file_generator'
2
3
 
3
4
  module Protobuf
@@ -6,36 +7,86 @@ module Protobuf
6
7
  CodeGeneratorFatalError = Class.new(RuntimeError)
7
8
 
8
9
  def self.fatal(message)
9
- raise CodeGeneratorFatalError, message
10
+ fail CodeGeneratorFatalError, message
10
11
  end
11
12
 
12
13
  def self.print_tag_warning_suppress
13
14
  STDERR.puts "Suppress tag warning output with PB_NO_TAG_WARNINGS=1."
14
- def self.print_tag_warning_suppress; end
15
+ def self.print_tag_warning_suppress; end # rubocop:disable Lint/DuplicateMethods, Lint/NestedMethodDefinition
15
16
  end
16
17
 
17
18
  def self.warn(message)
18
19
  STDERR.puts("[WARN] #{message}")
19
20
  end
20
21
 
22
+ private
23
+
24
+ attr_accessor :request
25
+
26
+ public
27
+
21
28
  def initialize(request_bytes)
22
- @request = ::Google::Protobuf::Compiler::CodeGeneratorRequest.decode(request_bytes)
23
- @generated_files = []
29
+ @request_bytes = request_bytes
30
+ self.request = ::Google::Protobuf::Compiler::CodeGeneratorRequest.decode(request_bytes)
31
+ end
32
+
33
+ def eval_unknown_extensions!
34
+ request.proto_file.each do |file_descriptor|
35
+ ::Protobuf::Generators::FileGenerator.new(file_descriptor).eval_unknown_extensions!
36
+ end
37
+ self.request = ::Google::Protobuf::Compiler::CodeGeneratorRequest.decode(@request_bytes)
24
38
  end
25
39
 
26
40
  def generate_file(file_descriptor)
27
- file_generator = ::Protobuf::Generators::FileGenerator.new(file_descriptor)
28
- @generated_files << file_generator.generate_output_file
41
+ ::Protobuf::Generators::FileGenerator.new(file_descriptor).generate_output_file
29
42
  end
30
43
 
31
44
  def response_bytes
32
- @request.proto_file.each do |file_descriptor|
45
+ generated_files = request.proto_file.map do |file_descriptor|
33
46
  generate_file(file_descriptor)
34
47
  end
35
48
 
36
- return ::Google::Protobuf::Compiler::CodeGeneratorResponse.encode(:file => @generated_files)
49
+ ::Google::Protobuf::Compiler::CodeGeneratorResponse.encode(:file => generated_files)
37
50
  end
38
51
 
52
+ Protobuf::Field::BaseField.module_eval do
53
+ # Sets a MessageField that is known to be an option.
54
+ # We must allow fields to be set one at a time, as option syntax allows us to
55
+ # set each field within the option using a separate "option" line.
56
+ def set_with_options(message_instance, bytes)
57
+ if message_instance[name].is_a?(::Protobuf::Message)
58
+ gp = Google::Protobuf
59
+ if message_instance.is_a?(gp::EnumOptions) || message_instance.is_a?(gp::EnumValueOptions) ||
60
+ message_instance.is_a?(gp::FieldOptions) || message_instance.is_a?(gp::FileOptions) ||
61
+ message_instance.is_a?(gp::MethodOptions) || message_instance.is_a?(gp::ServiceOptions) ||
62
+ message_instance.is_a?(gp::MessageOptions)
63
+
64
+ original_field = message_instance[name]
65
+ decoded_field = decode(bytes)
66
+ decoded_field.each_field do |subfield, subvalue|
67
+ option_set(original_field, subfield, subvalue) { decoded_field.field?(subfield.tag) }
68
+ end
69
+ return
70
+ end
71
+ end
72
+
73
+ set_without_options(message_instance, bytes)
74
+ end
75
+
76
+ def option_set(message_field, subfield, subvalue)
77
+ return unless yield
78
+ if subfield.repeated?
79
+ message_field[subfield.tag].concat(subvalue)
80
+ elsif message_field[subfield.tag] && subvalue.is_a?(::Protobuf::Message)
81
+ subvalue.each_field do |f, v|
82
+ option_set(message_field[subfield.tag], f, v) { subvalue.field?(f.tag) }
83
+ end
84
+ else
85
+ message_field[subfield.tag] = subvalue
86
+ end
87
+ end
88
+
89
+ alias_method_chain :set, :options
90
+ end
39
91
  end
40
92
  end
41
-
@@ -1,74 +1,28 @@
1
- require 'protobuf/wire_type'
2
- require 'protobuf/exceptions'
3
-
4
1
  module Protobuf
5
2
  class Decoder
6
3
 
7
4
  # Read bytes from +stream+ and pass to +message+ object.
8
- def self.decode_each_field(stream, &block)
5
+ def self.decode_each_field(stream)
9
6
  until stream.eof?
10
- tag, bytes = read_field(stream)
11
- block.call(tag, bytes)
7
+ bits = Varint.decode(stream)
8
+ wire_type = bits & 0x07
9
+ tag = bits >> 3
10
+
11
+ bytes = if wire_type == ::Protobuf::WireType::VARINT
12
+ Varint.decode(stream)
13
+ elsif wire_type == ::Protobuf::WireType::LENGTH_DELIMITED
14
+ value_length = Varint.decode(stream)
15
+ stream.read(value_length)
16
+ elsif wire_type == ::Protobuf::WireType::FIXED64
17
+ stream.read(8)
18
+ elsif wire_type == ::Protobuf::WireType::FIXED32
19
+ stream.read(4)
20
+ else
21
+ fail InvalidWireType, wire_type
22
+ end
23
+
24
+ yield(tag, bytes)
12
25
  end
13
26
  end
14
-
15
- def self.read_field(stream)
16
- tag, wire_type = read_key(stream)
17
- bytes = case wire_type
18
- when ::Protobuf::WireType::VARINT then
19
- read_varint(stream)
20
- when ::Protobuf::WireType::FIXED64 then
21
- read_fixed64(stream)
22
- when ::Protobuf::WireType::LENGTH_DELIMITED then
23
- read_length_delimited(stream)
24
- when ::Protobuf::WireType::FIXED32 then
25
- read_fixed32(stream)
26
- when ::Protobuf::WireType::START_GROUP then
27
- raise NotImplementedError, 'Group is deprecated.'
28
- when ::Protobuf::WireType::END_GROUP then
29
- raise NotImplementedError, 'Group is deprecated.'
30
- else
31
- raise InvalidWireType, wire_type
32
- end
33
-
34
- return tag, bytes
35
- end
36
-
37
- # Read 32-bit string value from +stream+.
38
- def self.read_fixed32(stream)
39
- stream.read(4)
40
- end
41
-
42
- # Read 64-bit string value from +stream+.
43
- def self.read_fixed64(stream)
44
- stream.read(8)
45
- end
46
-
47
- # Read key pair (tag and wire-type) from +stream+.
48
- def self.read_key(stream)
49
- bits = read_varint(stream)
50
- wire_type = bits & 0x07
51
- tag = bits >> 3
52
- [tag, wire_type]
53
- end
54
-
55
- # Read length-delimited string value from +stream+.
56
- def self.read_length_delimited(stream)
57
- value_length = read_varint(stream)
58
- stream.read(value_length)
59
- end
60
-
61
- # Read varint integer value from +stream+.
62
- def self.read_varint(stream)
63
- value = index = 0
64
- begin
65
- byte = stream.readbyte
66
- value |= (byte & 0x7f) << (7 * index)
67
- index += 1
68
- end while (byte & 0x80).nonzero?
69
- value
70
- end
71
-
72
27
  end
73
28
  end
74
-
@@ -0,0 +1,117 @@
1
+ require 'active_support/deprecation'
2
+
3
+ module Protobuf
4
+ if ::ActiveSupport::Deprecation.is_a?(Class)
5
+ class DeprecationBase < ::ActiveSupport::Deprecation
6
+ def deprecate_methods(*args)
7
+ deprecation_options = { :deprecator => self }
8
+
9
+ if args.last.is_a?(Hash)
10
+ args.last.merge!(deprecation_options)
11
+ else
12
+ args.push(deprecation_options)
13
+ end
14
+
15
+ super
16
+ end
17
+
18
+ def deprecation_warning(deprecated_method_name, message = nil, caller_backtrace = nil)
19
+ # This ensures ActiveSupport::Deprecation doesn't look for the caller, which is very costly.
20
+ super(deprecated_method_name, message, caller_backtrace) unless ENV.key?('PB_IGNORE_DEPRECATIONS')
21
+ end
22
+ end
23
+
24
+ class Deprecation < DeprecationBase
25
+ def define_deprecated_methods(target_module, method_hash)
26
+ target_module.module_eval do
27
+ method_hash.each do |old_method, new_method|
28
+ alias_method old_method, new_method
29
+ end
30
+ end
31
+
32
+ deprecate_methods(target_module, method_hash)
33
+ end
34
+ end
35
+
36
+ class FieldDeprecation < DeprecationBase
37
+ # this is a convenience deprecator for deprecated proto fields
38
+
39
+ def deprecate_method(target_module, method_name)
40
+ deprecate_methods(target_module, method_name => target_module)
41
+ end
42
+
43
+ private
44
+
45
+ def deprecated_method_warning(method_name, target_module)
46
+ "#{target_module.name}##{method_name} field usage is deprecated"
47
+ end
48
+ end
49
+ else
50
+ # TODO: remove this clause when Rails < 4 support is no longer needed
51
+ deprecator = ::ActiveSupport::Deprecation.clone
52
+ deprecator.instance_eval do
53
+ def new(deprecation_horizon = nil, *)
54
+ self.deprecation_horizon = deprecation_horizon if deprecation_horizon
55
+ self
56
+ end
57
+ end
58
+ Deprecation = deprecator.clone
59
+ FieldDeprecation = deprecator.clone
60
+
61
+ Deprecation.instance_eval do
62
+ def define_deprecated_methods(target_module, method_hash)
63
+ target_module.module_eval do
64
+ method_hash.each do |old_method, new_method|
65
+ alias_method old_method, new_method
66
+ end
67
+ end
68
+
69
+ deprecate_methods(target_module, method_hash)
70
+ end
71
+ end
72
+
73
+ FieldDeprecation.instance_eval do
74
+ def deprecate_method(target_module, method_name)
75
+ deprecate_methods(target_module, method_name => target_module)
76
+ end
77
+
78
+ private
79
+
80
+ def deprecated_method_warning(method_name, target_module)
81
+ "#{target_module.name}##{method_name} field usage is deprecated"
82
+ end
83
+ end
84
+ end
85
+
86
+ def self.deprecator
87
+ @deprecator ||= Deprecation.new('4.0', to_s).tap do |deprecation|
88
+ deprecation.silenced = ENV.key?('PB_IGNORE_DEPRECATIONS')
89
+ deprecation.behavior = :stderr
90
+ end
91
+ end
92
+
93
+ def self.field_deprecator
94
+ @field_deprecator ||= FieldDeprecation.new.tap do |deprecation|
95
+ deprecation.silenced = ENV.key?('PB_IGNORE_DEPRECATIONS')
96
+ deprecation.behavior = :stderr
97
+ end
98
+ end
99
+
100
+ # Print Deprecation Warnings
101
+ #
102
+ # Default: true
103
+ #
104
+ # Simple boolean to define whether we want field deprecation warnings to
105
+ # be printed to stderr or not. The rpc_server has an option to set this value
106
+ # explicitly, or you can turn this option off by setting
107
+ # ENV['PB_IGNORE_DEPRECATIONS'] to a non-empty value.
108
+ #
109
+ # The rpc_server option will override the ENV setting.
110
+ def self.print_deprecation_warnings?
111
+ !field_deprecator.silenced
112
+ end
113
+
114
+ def self.print_deprecation_warnings=(value)
115
+ field_deprecator.silenced = !value
116
+ end
117
+ end
@@ -1,7 +1,9 @@
1
+ # encoding: utf-8
2
+
1
3
  ##
2
4
  # This file is auto-generated. DO NOT EDIT!
3
5
  #
4
- require 'protobuf/message'
6
+ require 'protobuf'
5
7
 
6
8
 
7
9
  ##
@@ -12,6 +14,7 @@ require 'google/protobuf/descriptor.pb'
12
14
  module Google
13
15
  module Protobuf
14
16
  module Compiler
17
+ ::Protobuf::Optionable.inject(self) { ::Google::Protobuf::FileOptions }
15
18
 
16
19
  ##
17
20
  # Message Classes
@@ -24,6 +27,13 @@ module Google
24
27
 
25
28
 
26
29
 
30
+ ##
31
+ # File Options
32
+ #
33
+ set_option :java_package, "com.google.protobuf.compiler"
34
+ set_option :java_outer_classname, "PluginProtos"
35
+
36
+
27
37
  ##
28
38
  # Message Fields
29
39
  #
@@ -1,10 +1,13 @@
1
+ # encoding: utf-8
2
+
1
3
  ##
2
4
  # This file is auto-generated. DO NOT EDIT!
3
5
  #
4
- require 'protobuf/message'
6
+ require 'protobuf'
5
7
 
6
8
  module Google
7
9
  module Protobuf
10
+ ::Protobuf::Optionable.inject(self) { ::Google::Protobuf::FileOptions }
8
11
 
9
12
  ##
10
13
  # Message Classes
@@ -13,6 +16,7 @@ module Google
13
16
  class FileDescriptorProto < ::Protobuf::Message; end
14
17
  class DescriptorProto < ::Protobuf::Message
15
18
  class ExtensionRange < ::Protobuf::Message; end
19
+ class ReservedRange < ::Protobuf::Message; end
16
20
 
17
21
  end
18
22
 
@@ -46,6 +50,7 @@ module Google
46
50
 
47
51
  end
48
52
 
53
+ class OneofDescriptorProto < ::Protobuf::Message; end
49
54
  class EnumDescriptorProto < ::Protobuf::Message; end
50
55
  class EnumValueDescriptorProto < ::Protobuf::Message; end
51
56
  class ServiceDescriptorProto < ::Protobuf::Message; end
@@ -67,6 +72,12 @@ module Google
67
72
  define :STRING_PIECE, 2
68
73
  end
69
74
 
75
+ class JSType < ::Protobuf::Enum
76
+ define :JS_NORMAL, 0
77
+ define :JS_STRING, 1
78
+ define :JS_NUMBER, 2
79
+ end
80
+
70
81
  end
71
82
 
72
83
  class EnumOptions < ::Protobuf::Message; end
@@ -85,6 +96,17 @@ module Google
85
96
 
86
97
 
87
98
 
99
+ ##
100
+ # File Options
101
+ #
102
+ set_option :java_package, "com.google.protobuf"
103
+ set_option :java_outer_classname, "DescriptorProtos"
104
+ set_option :optimize_for, ::Google::Protobuf::FileOptions::OptimizeMode::SPEED
105
+ set_option :go_package, "descriptor"
106
+ set_option :objc_class_prefix, "GPB"
107
+ set_option :csharp_namespace, "Google.Protobuf.Reflection"
108
+
109
+
88
110
  ##
89
111
  # Message Fields
90
112
  #
@@ -104,6 +126,7 @@ module Google
104
126
  repeated ::Google::Protobuf::FieldDescriptorProto, :extension, 7
105
127
  optional ::Google::Protobuf::FileOptions, :options, 8
106
128
  optional ::Google::Protobuf::SourceCodeInfo, :source_code_info, 9
129
+ optional :string, :syntax, 12
107
130
  end
108
131
 
109
132
  class DescriptorProto
@@ -112,13 +135,21 @@ module Google
112
135
  optional :int32, :end, 2
113
136
  end
114
137
 
138
+ class ReservedRange
139
+ optional :int32, :start, 1
140
+ optional :int32, :end, 2
141
+ end
142
+
115
143
  optional :string, :name, 1
116
144
  repeated ::Google::Protobuf::FieldDescriptorProto, :field, 2
117
145
  repeated ::Google::Protobuf::FieldDescriptorProto, :extension, 6
118
146
  repeated ::Google::Protobuf::DescriptorProto, :nested_type, 3
119
147
  repeated ::Google::Protobuf::EnumDescriptorProto, :enum_type, 4
120
148
  repeated ::Google::Protobuf::DescriptorProto::ExtensionRange, :extension_range, 5
149
+ repeated ::Google::Protobuf::OneofDescriptorProto, :oneof_decl, 8
121
150
  optional ::Google::Protobuf::MessageOptions, :options, 7
151
+ repeated ::Google::Protobuf::DescriptorProto::ReservedRange, :reserved_range, 9
152
+ repeated :string, :reserved_name, 10
122
153
  end
123
154
 
124
155
  class FieldDescriptorProto
@@ -129,9 +160,15 @@ module Google
129
160
  optional :string, :type_name, 6
130
161
  optional :string, :extendee, 2
131
162
  optional :string, :default_value, 7
163
+ optional :int32, :oneof_index, 9
164
+ optional :string, :json_name, 10
132
165
  optional ::Google::Protobuf::FieldOptions, :options, 8
133
166
  end
134
167
 
168
+ class OneofDescriptorProto
169
+ optional :string, :name, 1
170
+ end
171
+
135
172
  class EnumDescriptorProto
136
173
  optional :string, :name, 1
137
174
  repeated ::Google::Protobuf::EnumValueDescriptorProto, :value, 2
@@ -155,6 +192,8 @@ module Google
155
192
  optional :string, :input_type, 2
156
193
  optional :string, :output_type, 3
157
194
  optional ::Google::Protobuf::MethodOptions, :options, 4
195
+ optional :bool, :client_streaming, 5, :default => false
196
+ optional :bool, :server_streaming, 6, :default => false
158
197
  end
159
198
 
160
199
  class FileOptions
@@ -162,11 +201,17 @@ module Google
162
201
  optional :string, :java_outer_classname, 8
163
202
  optional :bool, :java_multiple_files, 10, :default => false
164
203
  optional :bool, :java_generate_equals_and_hash, 20, :default => false
204
+ optional :bool, :java_string_check_utf8, 27, :default => false
165
205
  optional ::Google::Protobuf::FileOptions::OptimizeMode, :optimize_for, 9, :default => ::Google::Protobuf::FileOptions::OptimizeMode::SPEED
166
206
  optional :string, :go_package, 11
167
207
  optional :bool, :cc_generic_services, 16, :default => false
168
208
  optional :bool, :java_generic_services, 17, :default => false
169
209
  optional :bool, :py_generic_services, 18, :default => false
210
+ optional :bool, :deprecated, 23, :default => false
211
+ optional :bool, :cc_enable_arenas, 31, :default => false
212
+ optional :string, :objc_class_prefix, 36
213
+ optional :string, :csharp_namespace, 37
214
+ optional :bool, :javanano_use_deprecated_package, 38
170
215
  repeated ::Google::Protobuf::UninterpretedOption, :uninterpreted_option, 999
171
216
  # Extension Fields
172
217
  extensions 1000...536870912
@@ -175,6 +220,8 @@ module Google
175
220
  class MessageOptions
176
221
  optional :bool, :message_set_wire_format, 1, :default => false
177
222
  optional :bool, :no_standard_descriptor_accessor, 2, :default => false
223
+ optional :bool, :deprecated, 3, :default => false
224
+ optional :bool, :map_entry, 7
178
225
  repeated ::Google::Protobuf::UninterpretedOption, :uninterpreted_option, 999
179
226
  # Extension Fields
180
227
  extensions 1000...536870912
@@ -183,9 +230,9 @@ module Google
183
230
  class FieldOptions
184
231
  optional ::Google::Protobuf::FieldOptions::CType, :ctype, 1, :default => ::Google::Protobuf::FieldOptions::CType::STRING
185
232
  optional :bool, :packed, 2
233
+ optional ::Google::Protobuf::FieldOptions::JSType, :jstype, 6, :default => ::Google::Protobuf::FieldOptions::JSType::JS_NORMAL
186
234
  optional :bool, :lazy, 5, :default => false
187
235
  optional :bool, :deprecated, 3, :default => false
188
- optional :string, :experimental_map_key, 9
189
236
  optional :bool, :weak, 10, :default => false
190
237
  repeated ::Google::Protobuf::UninterpretedOption, :uninterpreted_option, 999
191
238
  # Extension Fields
@@ -193,25 +240,29 @@ module Google
193
240
  end
194
241
 
195
242
  class EnumOptions
196
- optional :bool, :allow_alias, 2, :default => true
243
+ optional :bool, :allow_alias, 2
244
+ optional :bool, :deprecated, 3, :default => false
197
245
  repeated ::Google::Protobuf::UninterpretedOption, :uninterpreted_option, 999
198
246
  # Extension Fields
199
247
  extensions 1000...536870912
200
248
  end
201
249
 
202
250
  class EnumValueOptions
251
+ optional :bool, :deprecated, 1, :default => false
203
252
  repeated ::Google::Protobuf::UninterpretedOption, :uninterpreted_option, 999
204
253
  # Extension Fields
205
254
  extensions 1000...536870912
206
255
  end
207
256
 
208
257
  class ServiceOptions
258
+ optional :bool, :deprecated, 33, :default => false
209
259
  repeated ::Google::Protobuf::UninterpretedOption, :uninterpreted_option, 999
210
260
  # Extension Fields
211
261
  extensions 1000...536870912
212
262
  end
213
263
 
214
264
  class MethodOptions
265
+ optional :bool, :deprecated, 33, :default => false
215
266
  repeated ::Google::Protobuf::UninterpretedOption, :uninterpreted_option, 999
216
267
  # Extension Fields
217
268
  extensions 1000...536870912
@@ -238,6 +289,7 @@ module Google
238
289
  repeated :int32, :span, 2, :packed => true
239
290
  optional :string, :leading_comments, 3
240
291
  optional :string, :trailing_comments, 4
292
+ repeated :string, :leading_detached_comments, 6
241
293
  end
242
294
 
243
295
  repeated ::Google::Protobuf::SourceCodeInfo::Location, :location, 1