google-protobuf 3.25.8 → 4.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ext/google/protobuf_c/convert.c +33 -15
- data/ext/google/protobuf_c/defs.c +802 -125
- data/ext/google/protobuf_c/extconf.rb +20 -10
- data/ext/google/protobuf_c/glue.c +79 -0
- data/ext/google/protobuf_c/map.c +145 -63
- data/ext/google/protobuf_c/map.h +7 -3
- data/ext/google/protobuf_c/message.c +204 -171
- data/ext/google/protobuf_c/message.h +2 -6
- data/ext/google/protobuf_c/protobuf.c +33 -19
- data/ext/google/protobuf_c/protobuf.h +3 -15
- data/ext/google/protobuf_c/repeated_field.c +130 -58
- data/ext/google/protobuf_c/repeated_field.h +6 -2
- data/ext/google/protobuf_c/ruby-upb.c +10615 -7878
- data/ext/google/protobuf_c/ruby-upb.h +12626 -8960
- data/ext/google/protobuf_c/shared_convert.c +7 -2
- data/ext/google/protobuf_c/shared_message.c +3 -32
- data/ext/google/protobuf_c/shared_message.h +0 -4
- data/ext/google/protobuf_c/third_party/utf8_range/utf8_range.c +207 -0
- data/ext/google/protobuf_c/third_party/utf8_range/utf8_range.h +9 -8
- data/ext/google/protobuf_c/third_party/utf8_range/utf8_range_neon.inc +117 -0
- data/ext/google/protobuf_c/third_party/utf8_range/utf8_range_sse.inc +272 -0
- data/lib/google/protobuf/any_pb.rb +2 -23
- data/lib/google/protobuf/api_pb.rb +3 -26
- data/lib/google/protobuf/descriptor_pb.rb +8 -24
- data/lib/google/protobuf/duration_pb.rb +2 -23
- data/lib/google/protobuf/empty_pb.rb +2 -23
- data/lib/google/protobuf/ffi/descriptor.rb +14 -4
- data/lib/google/protobuf/ffi/descriptor_pool.rb +5 -1
- data/lib/google/protobuf/ffi/enum_descriptor.rb +13 -1
- data/lib/google/protobuf/ffi/ffi.rb +7 -6
- data/lib/google/protobuf/ffi/field_descriptor.rb +29 -2
- data/lib/google/protobuf/ffi/file_descriptor.rb +39 -13
- data/lib/google/protobuf/ffi/internal/arena.rb +0 -6
- data/lib/google/protobuf/ffi/internal/convert.rb +17 -30
- data/lib/google/protobuf/ffi/internal/pointer_helper.rb +2 -1
- data/lib/google/protobuf/ffi/map.rb +52 -26
- data/lib/google/protobuf/ffi/message.rb +189 -68
- data/lib/google/protobuf/ffi/method_descriptor.rb +124 -0
- data/lib/google/protobuf/ffi/object_cache.rb +3 -3
- data/lib/google/protobuf/ffi/oneof_descriptor.rb +13 -1
- data/lib/google/protobuf/ffi/repeated_field.rb +47 -19
- data/lib/google/protobuf/ffi/service_descriptor.rb +117 -0
- data/lib/google/protobuf/field_mask_pb.rb +2 -23
- data/lib/google/protobuf/internal/object_cache.rb +99 -0
- data/lib/google/protobuf/message_exts.rb +4 -0
- data/lib/google/protobuf/plugin_pb.rb +3 -25
- data/lib/google/protobuf/repeated_field.rb +4 -5
- data/lib/google/protobuf/source_context_pb.rb +2 -23
- data/lib/google/protobuf/struct_pb.rb +2 -23
- data/lib/google/protobuf/timestamp_pb.rb +2 -23
- data/lib/google/protobuf/type_pb.rb +2 -25
- data/lib/google/protobuf/wrappers_pb.rb +2 -23
- data/lib/google/protobuf.rb +1 -1
- data/lib/google/protobuf_ffi.rb +6 -4
- data/lib/google/protobuf_native.rb +0 -1
- data/lib/google/tasks/ffi.rake +2 -4
- metadata +36 -22
- data/ext/google/protobuf_c/third_party/utf8_range/naive.c +0 -92
- data/ext/google/protobuf_c/third_party/utf8_range/range2-neon.c +0 -157
- data/ext/google/protobuf_c/third_party/utf8_range/range2-sse.c +0 -170
- data/ext/google/protobuf_c/wrap_memcpy.c +0 -29
- data/lib/google/protobuf/descriptor_dsl.rb +0 -465
- data/lib/google/protobuf/object_cache.rb +0 -97
|
@@ -24,12 +24,14 @@ module Google
|
|
|
24
24
|
module Protobuf
|
|
25
25
|
class FFI
|
|
26
26
|
# Array
|
|
27
|
-
attach_function :append_array,
|
|
28
|
-
attach_function :get_msgval_at
|
|
29
|
-
attach_function :create_array,
|
|
30
|
-
attach_function :array_resize,
|
|
31
|
-
attach_function :array_set,
|
|
32
|
-
attach_function :array_size,
|
|
27
|
+
attach_function :append_array, :upb_Array_Append, [:Array, MessageValue.by_value, Internal::Arena], :bool
|
|
28
|
+
attach_function :get_msgval_at, :upb_Array_Get, [:Array, :size_t], MessageValue.by_value
|
|
29
|
+
attach_function :create_array, :upb_Array_New, [Internal::Arena, CType], :Array
|
|
30
|
+
attach_function :array_resize, :upb_Array_Resize, [:Array, :size_t, Internal::Arena], :bool
|
|
31
|
+
attach_function :array_set, :upb_Array_Set, [:Array, :size_t, MessageValue.by_value], :void
|
|
32
|
+
attach_function :array_size, :upb_Array_Size, [:Array], :size_t
|
|
33
|
+
attach_function :array_freeze, :upb_Array_Freeze, [:Array, MiniTable.by_ref], :void
|
|
34
|
+
attach_function :array_frozen?, :upb_Array_IsFrozen, [:Array], :bool
|
|
33
35
|
end
|
|
34
36
|
|
|
35
37
|
class RepeatedField
|
|
@@ -174,6 +176,38 @@ module Google
|
|
|
174
176
|
end
|
|
175
177
|
alias size :length
|
|
176
178
|
|
|
179
|
+
##
|
|
180
|
+
# Is this object frozen?
|
|
181
|
+
# Returns true if either this Ruby wrapper or the underlying
|
|
182
|
+
# representation are frozen. Freezes the wrapper if the underlying
|
|
183
|
+
# representation is already frozen but this wrapper isn't.
|
|
184
|
+
def frozen?
|
|
185
|
+
unless Google::Protobuf::FFI.array_frozen? array
|
|
186
|
+
raise RuntimeError.new "Ruby frozen RepeatedField with mutable representation" if super
|
|
187
|
+
return false
|
|
188
|
+
end
|
|
189
|
+
method(:freeze).super_method.call unless super
|
|
190
|
+
true
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
##
|
|
194
|
+
# Freezes the RepeatedField object. We have to intercept this so we can
|
|
195
|
+
# freeze the underlying representation, not just the Ruby wrapper. Returns
|
|
196
|
+
# self.
|
|
197
|
+
def freeze
|
|
198
|
+
if method(:frozen?).super_method.call
|
|
199
|
+
unless Google::Protobuf::FFI.array_frozen? array
|
|
200
|
+
raise RuntimeError.new "Underlying representation of repeated field still mutable despite frozen wrapper"
|
|
201
|
+
end
|
|
202
|
+
return self
|
|
203
|
+
end
|
|
204
|
+
unless Google::Protobuf::FFI.array_frozen? array
|
|
205
|
+
mini_table = (type == :message) ? Google::Protobuf::FFI.get_mini_table(@descriptor) : nil
|
|
206
|
+
Google::Protobuf::FFI.array_freeze(array, mini_table)
|
|
207
|
+
end
|
|
208
|
+
super
|
|
209
|
+
end
|
|
210
|
+
|
|
177
211
|
def dup
|
|
178
212
|
instance = self.class.allocate
|
|
179
213
|
instance.send(:initialize, type, descriptor: descriptor, arena: arena)
|
|
@@ -252,16 +286,6 @@ module Google
|
|
|
252
286
|
|
|
253
287
|
attr :name, :arena, :array, :type, :descriptor
|
|
254
288
|
|
|
255
|
-
def internal_deep_freeze
|
|
256
|
-
freeze
|
|
257
|
-
if type == :message
|
|
258
|
-
each do |element|
|
|
259
|
-
element.send :internal_deep_freeze
|
|
260
|
-
end
|
|
261
|
-
end
|
|
262
|
-
self
|
|
263
|
-
end
|
|
264
|
-
|
|
265
289
|
def internal_push(*elements)
|
|
266
290
|
elements.each do |element|
|
|
267
291
|
append_msg_val convert_ruby_to_upb(element, arena, type, descriptor)
|
|
@@ -346,10 +370,14 @@ module Google
|
|
|
346
370
|
OBJECT_CACHE.try_add(@array.address, self)
|
|
347
371
|
end
|
|
348
372
|
|
|
349
|
-
|
|
350
|
-
#
|
|
373
|
+
##
|
|
374
|
+
# Constructor that uses the type information from the given
|
|
375
|
+
# FieldDescriptor to configure the new RepeatedField instance.
|
|
376
|
+
# @param field [FieldDescriptor] Type information for the new RepeatedField
|
|
351
377
|
# @param arena [Arena] Owning message's arena
|
|
352
|
-
|
|
378
|
+
# @param values [Enumerable] Initial values
|
|
379
|
+
# @param array [::FFI::Pointer] Existing upb_Array
|
|
380
|
+
def self.construct_for_field(field, arena: nil, values: nil, array: nil)
|
|
353
381
|
instance = allocate
|
|
354
382
|
options = {initial_values: values, name: field.name, arena: arena, array: array}
|
|
355
383
|
if [:enum, :message].include? field.type
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# Protocol Buffers - Google's data interchange format
|
|
2
|
+
# Copyright 2024 Google Inc. All rights reserved.
|
|
3
|
+
#
|
|
4
|
+
# Use of this source code is governed by a BSD-style
|
|
5
|
+
# license that can be found in the LICENSE file or at
|
|
6
|
+
# https://developers.google.com/open-source/licenses/bsd
|
|
7
|
+
|
|
8
|
+
module Google
|
|
9
|
+
module Protobuf
|
|
10
|
+
class ServiceDescriptor
|
|
11
|
+
attr :service_def, :descriptor_pool
|
|
12
|
+
include Enumerable
|
|
13
|
+
|
|
14
|
+
include Google::Protobuf::Internal::Convert
|
|
15
|
+
|
|
16
|
+
# FFI Interface methods and setup
|
|
17
|
+
extend ::FFI::DataConverter
|
|
18
|
+
native_type ::FFI::Type::POINTER
|
|
19
|
+
|
|
20
|
+
class << self
|
|
21
|
+
prepend Google::Protobuf::Internal::TypeSafety
|
|
22
|
+
include Google::Protobuf::Internal::PointerHelper
|
|
23
|
+
|
|
24
|
+
# @param value [ServiceDescriptor] ServiceDescriptor to convert to an FFI native type
|
|
25
|
+
# @param _ [Object] Unused
|
|
26
|
+
def to_native(value, _)
|
|
27
|
+
service_def_ptr = value.nil? ? nil : value.instance_variable_get(:@service_def)
|
|
28
|
+
return ::FFI::Pointer::NULL if service_def_ptr.nil?
|
|
29
|
+
raise "Underlying service_def was null!" if service_def_ptr.null?
|
|
30
|
+
service_def_ptr
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
##
|
|
34
|
+
# @param service_def [::FFI::Pointer] ServiceDef pointer to be wrapped
|
|
35
|
+
# @param _ [Object] Unused
|
|
36
|
+
def from_native(service_def, _ = nil)
|
|
37
|
+
return nil if service_def.nil? or service_def.null?
|
|
38
|
+
file_def = Google::Protobuf::FFI.file_def_by_raw_service_def(service_def)
|
|
39
|
+
descriptor_from_file_def(file_def, service_def)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def self.new(*arguments, &block)
|
|
44
|
+
raise "Descriptor objects may not be created from Ruby."
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def to_s
|
|
48
|
+
inspect
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def inspect
|
|
52
|
+
"#{self.class.name}: #{name}"
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def name
|
|
56
|
+
@name ||= Google::Protobuf::FFI.get_service_full_name(self)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def file_descriptor
|
|
60
|
+
@descriptor_pool.send(:get_file_descriptor, Google::Protobuf::FFI.file_def_by_raw_service_def(@service_def))
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def each &block
|
|
64
|
+
n = Google::Protobuf::FFI.method_count(self)
|
|
65
|
+
0.upto(n-1) do |i|
|
|
66
|
+
yield(Google::Protobuf::FFI.get_method_by_index(self, i))
|
|
67
|
+
end
|
|
68
|
+
nil
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def options
|
|
72
|
+
@options ||= begin
|
|
73
|
+
size_ptr = ::FFI::MemoryPointer.new(:size_t, 1)
|
|
74
|
+
temporary_arena = Google::Protobuf::FFI.create_arena
|
|
75
|
+
buffer = Google::Protobuf::FFI.service_options(self, size_ptr, temporary_arena)
|
|
76
|
+
Google::Protobuf::ServiceOptions.decode(buffer.read_string_length(size_ptr.read(:size_t)).force_encoding("ASCII-8BIT").freeze).freeze
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def to_proto
|
|
81
|
+
@to_proto ||= begin
|
|
82
|
+
size_ptr = ::FFI::MemoryPointer.new(:size_t, 1)
|
|
83
|
+
temporary_arena = Google::Protobuf::FFI.create_arena
|
|
84
|
+
buffer = Google::Protobuf::FFI.service_to_proto(self, size_ptr, temporary_arena)
|
|
85
|
+
Google::Protobuf::ServiceDescriptorProto.decode(buffer.read_string_length(size_ptr.read(:size_t)).force_encoding("ASCII-8BIT").freeze)
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
private
|
|
90
|
+
|
|
91
|
+
def initialize(service_def, descriptor_pool)
|
|
92
|
+
@service_def = service_def
|
|
93
|
+
@descriptor_pool = descriptor_pool
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def self.private_constructor(service_def, descriptor_pool)
|
|
97
|
+
instance = allocate
|
|
98
|
+
instance.send(:initialize, service_def, descriptor_pool)
|
|
99
|
+
instance
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def c_type
|
|
103
|
+
@c_type ||= Google::Protobuf::FFI.get_c_type(self)
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
class FFI
|
|
108
|
+
# ServiceDef
|
|
109
|
+
attach_function :file_def_by_raw_service_def, :upb_ServiceDef_File, [:pointer], :FileDef
|
|
110
|
+
attach_function :get_service_full_name, :upb_ServiceDef_FullName, [ServiceDescriptor], :string
|
|
111
|
+
attach_function :method_count, :upb_ServiceDef_MethodCount, [ServiceDescriptor], :int
|
|
112
|
+
attach_function :get_method_by_index, :upb_ServiceDef_Method, [ServiceDescriptor, :int], MethodDescriptor
|
|
113
|
+
attach_function :service_options, :ServiceDescriptor_serialized_options, [ServiceDescriptor, :pointer, Internal::Arena], :pointer
|
|
114
|
+
attach_function :service_to_proto, :ServiceDescriptor_serialized_to_proto, [ServiceDescriptor, :pointer, Internal::Arena], :pointer
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
end
|
|
@@ -7,29 +7,8 @@ require 'google/protobuf'
|
|
|
7
7
|
|
|
8
8
|
descriptor_data = "\n google/protobuf/field_mask.proto\x12\x0fgoogle.protobuf\"\x1a\n\tFieldMask\x12\r\n\x05paths\x18\x01 \x03(\tB\x85\x01\n\x13\x63om.google.protobufB\x0e\x46ieldMaskProtoP\x01Z2google.golang.org/protobuf/types/known/fieldmaskpb\xf8\x01\x01\xa2\x02\x03GPB\xaa\x02\x1eGoogle.Protobuf.WellKnownTypesb\x06proto3"
|
|
9
9
|
|
|
10
|
-
pool = Google::Protobuf::DescriptorPool.generated_pool
|
|
11
|
-
|
|
12
|
-
begin
|
|
13
|
-
pool.add_serialized_file(descriptor_data)
|
|
14
|
-
rescue TypeError
|
|
15
|
-
# Compatibility code: will be removed in the next major version.
|
|
16
|
-
require 'google/protobuf/descriptor_pb'
|
|
17
|
-
parsed = Google::Protobuf::FileDescriptorProto.decode(descriptor_data)
|
|
18
|
-
parsed.clear_dependency
|
|
19
|
-
serialized = parsed.class.encode(parsed)
|
|
20
|
-
file = pool.add_serialized_file(serialized)
|
|
21
|
-
warn "Warning: Protobuf detected an import path issue while loading generated file #{__FILE__}"
|
|
22
|
-
imports = [
|
|
23
|
-
]
|
|
24
|
-
imports.each do |type_name, expected_filename|
|
|
25
|
-
import_file = pool.lookup(type_name).file_descriptor
|
|
26
|
-
if import_file.name != expected_filename
|
|
27
|
-
warn "- #{file.name} imports #{expected_filename}, but that import was loaded as #{import_file.name}"
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
warn "Each proto file must use a consistent fully-qualified name."
|
|
31
|
-
warn "This will become an error in the next major version."
|
|
32
|
-
end
|
|
10
|
+
pool = ::Google::Protobuf::DescriptorPool.generated_pool
|
|
11
|
+
pool.add_serialized_file(descriptor_data)
|
|
33
12
|
|
|
34
13
|
module Google
|
|
35
14
|
module Protobuf
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Protocol Buffers - Google's data interchange format
|
|
2
|
+
# Copyright 2023 Google Inc. All rights reserved.
|
|
3
|
+
#
|
|
4
|
+
# Use of this source code is governed by a BSD-style
|
|
5
|
+
# license that can be found in the LICENSE file or at
|
|
6
|
+
# https://developers.google.com/open-source/licenses/bsd
|
|
7
|
+
|
|
8
|
+
module Google
|
|
9
|
+
module Protobuf
|
|
10
|
+
module Internal
|
|
11
|
+
# A pointer -> Ruby Object cache that keeps references to Ruby wrapper
|
|
12
|
+
# objects. This allows us to look up any Ruby wrapper object by the address
|
|
13
|
+
# of the object it is wrapping. That way we can avoid ever creating two
|
|
14
|
+
# different wrapper objects for the same C object, which saves memory and
|
|
15
|
+
# preserves object identity.
|
|
16
|
+
#
|
|
17
|
+
# We use WeakMap for the cache. If sizeof(long) > sizeof(VALUE), we also
|
|
18
|
+
# need a secondary Hash to store WeakMap keys, because our pointer keys may
|
|
19
|
+
# need to be stored as Bignum instead of Fixnum. Since WeakMap is weak for
|
|
20
|
+
# both keys and values, a Bignum key will cause the WeakMap entry to be
|
|
21
|
+
# collected immediately unless there is another reference to the Bignum.
|
|
22
|
+
# This happens on 64-bit Windows, on which pointers are 64 bits but longs
|
|
23
|
+
# are 32 bits. In this case, we enable the secondary Hash to hold the keys
|
|
24
|
+
# and prevent them from being collected.
|
|
25
|
+
class ObjectCache
|
|
26
|
+
def initialize
|
|
27
|
+
@map = ObjectSpace::WeakMap.new
|
|
28
|
+
@mutex = Mutex.new
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def get(key)
|
|
32
|
+
@map[key]
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def try_add(key, value)
|
|
36
|
+
@map[key] || @mutex.synchronize do
|
|
37
|
+
@map[key] ||= value
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
class LegacyObjectCache
|
|
43
|
+
def initialize
|
|
44
|
+
@secondary_map = {}
|
|
45
|
+
@map = ObjectSpace::WeakMap.new
|
|
46
|
+
@mutex = Mutex.new
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def get(key)
|
|
50
|
+
value = if secondary_key = @secondary_map[key]
|
|
51
|
+
@map[secondary_key]
|
|
52
|
+
else
|
|
53
|
+
@mutex.synchronize do
|
|
54
|
+
@map[(@secondary_map[key] ||= Object.new)]
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# GC if we could remove at least 2000 entries or 20% of the table size
|
|
59
|
+
# (whichever is greater). Since the cost of the GC pass is O(N), we
|
|
60
|
+
# want to make sure that we condition this on overall table size, to
|
|
61
|
+
# avoid O(N^2) CPU costs.
|
|
62
|
+
cutoff = (@secondary_map.size * 0.2).ceil
|
|
63
|
+
cutoff = 2_000 if cutoff < 2_000
|
|
64
|
+
if (@secondary_map.size - @map.size) > cutoff
|
|
65
|
+
purge
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
value
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def try_add(key, value)
|
|
72
|
+
if secondary_key = @secondary_map[key]
|
|
73
|
+
if old_value = @map[secondary_key]
|
|
74
|
+
return old_value
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
@mutex.synchronize do
|
|
79
|
+
secondary_key ||= (@secondary_map[key] ||= Object.new)
|
|
80
|
+
@map[secondary_key] ||= value
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
private
|
|
85
|
+
|
|
86
|
+
def purge
|
|
87
|
+
@mutex.synchronize do
|
|
88
|
+
@secondary_map.each do |key, secondary_key|
|
|
89
|
+
unless @map.key?(secondary_key)
|
|
90
|
+
@secondary_map.delete(key)
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
nil
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
@@ -7,32 +7,10 @@ require 'google/protobuf'
|
|
|
7
7
|
require 'google/protobuf/descriptor_pb'
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
descriptor_data = "\n%google/protobuf/compiler/plugin.proto\x12\x18google.protobuf.compiler\x1a google/protobuf/descriptor.proto\"F\n\x07Version\x12\r\n\x05major\x18\x01 \x01(\x05\x12\r\n\x05minor\x18\x02 \x01(\x05\x12\r\n\x05patch\x18\x03 \x01(\x05\x12\x0e\n\x06suffix\x18\x04 \x01(\t\"\x81\x02\n\x14\x43odeGeneratorRequest\x12\x18\n\x10\x66ile_to_generate\x18\x01 \x03(\t\x12\x11\n\tparameter\x18\x02 \x01(\t\x12\x38\n\nproto_file\x18\x0f \x03(\x0b\x32$.google.protobuf.FileDescriptorProto\x12\x45\n\x17source_file_descriptors\x18\x11 \x03(\x0b\x32$.google.protobuf.FileDescriptorProto\x12;\n\x10\x63ompiler_version\x18\x03 \x01(\x0b\x32!.google.protobuf.compiler.Version\"\
|
|
10
|
+
descriptor_data = "\n%google/protobuf/compiler/plugin.proto\x12\x18google.protobuf.compiler\x1a google/protobuf/descriptor.proto\"F\n\x07Version\x12\r\n\x05major\x18\x01 \x01(\x05\x12\r\n\x05minor\x18\x02 \x01(\x05\x12\r\n\x05patch\x18\x03 \x01(\x05\x12\x0e\n\x06suffix\x18\x04 \x01(\t\"\x81\x02\n\x14\x43odeGeneratorRequest\x12\x18\n\x10\x66ile_to_generate\x18\x01 \x03(\t\x12\x11\n\tparameter\x18\x02 \x01(\t\x12\x38\n\nproto_file\x18\x0f \x03(\x0b\x32$.google.protobuf.FileDescriptorProto\x12\x45\n\x17source_file_descriptors\x18\x11 \x03(\x0b\x32$.google.protobuf.FileDescriptorProto\x12;\n\x10\x63ompiler_version\x18\x03 \x01(\x0b\x32!.google.protobuf.compiler.Version\"\x92\x03\n\x15\x43odeGeneratorResponse\x12\r\n\x05\x65rror\x18\x01 \x01(\t\x12\x1a\n\x12supported_features\x18\x02 \x01(\x04\x12\x17\n\x0fminimum_edition\x18\x03 \x01(\x05\x12\x17\n\x0fmaximum_edition\x18\x04 \x01(\x05\x12\x42\n\x04\x66ile\x18\x0f \x03(\x0b\x32\x34.google.protobuf.compiler.CodeGeneratorResponse.File\x1a\x7f\n\x04\x46ile\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x17\n\x0finsertion_point\x18\x02 \x01(\t\x12\x0f\n\x07\x63ontent\x18\x0f \x01(\t\x12?\n\x13generated_code_info\x18\x10 \x01(\x0b\x32\".google.protobuf.GeneratedCodeInfo\"W\n\x07\x46\x65\x61ture\x12\x10\n\x0c\x46\x45\x41TURE_NONE\x10\x00\x12\x1b\n\x17\x46\x45\x41TURE_PROTO3_OPTIONAL\x10\x01\x12\x1d\n\x19\x46\x45\x41TURE_SUPPORTS_EDITIONS\x10\x02\x42r\n\x1c\x63om.google.protobuf.compilerB\x0cPluginProtosZ)google.golang.org/protobuf/types/pluginpb\xaa\x02\x18Google.Protobuf.Compiler"
|
|
11
11
|
|
|
12
|
-
pool = Google::Protobuf::DescriptorPool.generated_pool
|
|
13
|
-
|
|
14
|
-
begin
|
|
15
|
-
pool.add_serialized_file(descriptor_data)
|
|
16
|
-
rescue TypeError
|
|
17
|
-
# Compatibility code: will be removed in the next major version.
|
|
18
|
-
require 'google/protobuf/descriptor_pb'
|
|
19
|
-
parsed = Google::Protobuf::FileDescriptorProto.decode(descriptor_data)
|
|
20
|
-
parsed.clear_dependency
|
|
21
|
-
serialized = parsed.class.encode(parsed)
|
|
22
|
-
file = pool.add_serialized_file(serialized)
|
|
23
|
-
warn "Warning: Protobuf detected an import path issue while loading generated file #{__FILE__}"
|
|
24
|
-
imports = [
|
|
25
|
-
["google.protobuf.FileDescriptorProto", "google/protobuf/descriptor.proto"],
|
|
26
|
-
]
|
|
27
|
-
imports.each do |type_name, expected_filename|
|
|
28
|
-
import_file = pool.lookup(type_name).file_descriptor
|
|
29
|
-
if import_file.name != expected_filename
|
|
30
|
-
warn "- #{file.name} imports #{expected_filename}, but that import was loaded as #{import_file.name}"
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
warn "Each proto file must use a consistent fully-qualified name."
|
|
34
|
-
warn "This will become an error in the next major version."
|
|
35
|
-
end
|
|
12
|
+
pool = ::Google::Protobuf::DescriptorPool.generated_pool
|
|
13
|
+
pool.add_serialized_file(descriptor_data)
|
|
36
14
|
|
|
37
15
|
module Google
|
|
38
16
|
module Protobuf
|
|
@@ -47,12 +47,12 @@ module Google
|
|
|
47
47
|
def_delegators :to_ary,
|
|
48
48
|
:&, :*, :-, :'<=>',
|
|
49
49
|
:assoc, :bsearch, :bsearch_index, :combination, :compact, :count,
|
|
50
|
-
:cycle, :dig, :drop, :drop_while, :eql?, :fetch, :find_index, :flatten,
|
|
51
|
-
:include?, :index, :inspect, :join,
|
|
50
|
+
:cycle, :difference, :dig, :drop, :drop_while, :eql?, :fetch, :find_index, :flatten,
|
|
51
|
+
:include?, :index, :inspect, :intersection, :join,
|
|
52
52
|
:pack, :permutation, :product, :pretty_print, :pretty_print_cycle,
|
|
53
53
|
:rassoc, :repeated_combination, :repeated_permutation, :reverse,
|
|
54
54
|
:rindex, :rotate, :sample, :shuffle, :shelljoin,
|
|
55
|
-
:to_s, :transpose, :uniq, :|
|
|
55
|
+
:to_s, :transpose, :union, :uniq, :|
|
|
56
56
|
|
|
57
57
|
|
|
58
58
|
def first(n=nil)
|
|
@@ -94,7 +94,6 @@ module Google
|
|
|
94
94
|
end
|
|
95
95
|
|
|
96
96
|
# array aliases into enumerable
|
|
97
|
-
alias_method :each_index, :each_with_index
|
|
98
97
|
alias_method :slice, :[]
|
|
99
98
|
alias_method :values_at, :select
|
|
100
99
|
alias_method :map, :collect
|
|
@@ -145,7 +144,7 @@ module Google
|
|
|
145
144
|
end
|
|
146
145
|
|
|
147
146
|
|
|
148
|
-
%w(collect! compact! delete_if fill flatten! insert reverse!
|
|
147
|
+
%w(collect! compact! delete_if each_index fill flatten! insert reverse!
|
|
149
148
|
rotate! select! shuffle! sort! sort_by! uniq!).each do |method_name|
|
|
150
149
|
define_array_wrapper_with_result_method(method_name)
|
|
151
150
|
end
|
|
@@ -7,29 +7,8 @@ require 'google/protobuf'
|
|
|
7
7
|
|
|
8
8
|
descriptor_data = "\n$google/protobuf/source_context.proto\x12\x0fgoogle.protobuf\"\"\n\rSourceContext\x12\x11\n\tfile_name\x18\x01 \x01(\tB\x8a\x01\n\x13\x63om.google.protobufB\x12SourceContextProtoP\x01Z6google.golang.org/protobuf/types/known/sourcecontextpb\xa2\x02\x03GPB\xaa\x02\x1eGoogle.Protobuf.WellKnownTypesb\x06proto3"
|
|
9
9
|
|
|
10
|
-
pool = Google::Protobuf::DescriptorPool.generated_pool
|
|
11
|
-
|
|
12
|
-
begin
|
|
13
|
-
pool.add_serialized_file(descriptor_data)
|
|
14
|
-
rescue TypeError
|
|
15
|
-
# Compatibility code: will be removed in the next major version.
|
|
16
|
-
require 'google/protobuf/descriptor_pb'
|
|
17
|
-
parsed = Google::Protobuf::FileDescriptorProto.decode(descriptor_data)
|
|
18
|
-
parsed.clear_dependency
|
|
19
|
-
serialized = parsed.class.encode(parsed)
|
|
20
|
-
file = pool.add_serialized_file(serialized)
|
|
21
|
-
warn "Warning: Protobuf detected an import path issue while loading generated file #{__FILE__}"
|
|
22
|
-
imports = [
|
|
23
|
-
]
|
|
24
|
-
imports.each do |type_name, expected_filename|
|
|
25
|
-
import_file = pool.lookup(type_name).file_descriptor
|
|
26
|
-
if import_file.name != expected_filename
|
|
27
|
-
warn "- #{file.name} imports #{expected_filename}, but that import was loaded as #{import_file.name}"
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
warn "Each proto file must use a consistent fully-qualified name."
|
|
31
|
-
warn "This will become an error in the next major version."
|
|
32
|
-
end
|
|
10
|
+
pool = ::Google::Protobuf::DescriptorPool.generated_pool
|
|
11
|
+
pool.add_serialized_file(descriptor_data)
|
|
33
12
|
|
|
34
13
|
module Google
|
|
35
14
|
module Protobuf
|
|
@@ -7,29 +7,8 @@ require 'google/protobuf'
|
|
|
7
7
|
|
|
8
8
|
descriptor_data = "\n\x1cgoogle/protobuf/struct.proto\x12\x0fgoogle.protobuf\"\x84\x01\n\x06Struct\x12\x33\n\x06\x66ields\x18\x01 \x03(\x0b\x32#.google.protobuf.Struct.FieldsEntry\x1a\x45\n\x0b\x46ieldsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12%\n\x05value\x18\x02 \x01(\x0b\x32\x16.google.protobuf.Value:\x02\x38\x01\"\xea\x01\n\x05Value\x12\x30\n\nnull_value\x18\x01 \x01(\x0e\x32\x1a.google.protobuf.NullValueH\x00\x12\x16\n\x0cnumber_value\x18\x02 \x01(\x01H\x00\x12\x16\n\x0cstring_value\x18\x03 \x01(\tH\x00\x12\x14\n\nbool_value\x18\x04 \x01(\x08H\x00\x12/\n\x0cstruct_value\x18\x05 \x01(\x0b\x32\x17.google.protobuf.StructH\x00\x12\x30\n\nlist_value\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.ListValueH\x00\x42\x06\n\x04kind\"3\n\tListValue\x12&\n\x06values\x18\x01 \x03(\x0b\x32\x16.google.protobuf.Value*\x1b\n\tNullValue\x12\x0e\n\nNULL_VALUE\x10\x00\x42\x7f\n\x13\x63om.google.protobufB\x0bStructProtoP\x01Z/google.golang.org/protobuf/types/known/structpb\xf8\x01\x01\xa2\x02\x03GPB\xaa\x02\x1eGoogle.Protobuf.WellKnownTypesb\x06proto3"
|
|
9
9
|
|
|
10
|
-
pool = Google::Protobuf::DescriptorPool.generated_pool
|
|
11
|
-
|
|
12
|
-
begin
|
|
13
|
-
pool.add_serialized_file(descriptor_data)
|
|
14
|
-
rescue TypeError
|
|
15
|
-
# Compatibility code: will be removed in the next major version.
|
|
16
|
-
require 'google/protobuf/descriptor_pb'
|
|
17
|
-
parsed = Google::Protobuf::FileDescriptorProto.decode(descriptor_data)
|
|
18
|
-
parsed.clear_dependency
|
|
19
|
-
serialized = parsed.class.encode(parsed)
|
|
20
|
-
file = pool.add_serialized_file(serialized)
|
|
21
|
-
warn "Warning: Protobuf detected an import path issue while loading generated file #{__FILE__}"
|
|
22
|
-
imports = [
|
|
23
|
-
]
|
|
24
|
-
imports.each do |type_name, expected_filename|
|
|
25
|
-
import_file = pool.lookup(type_name).file_descriptor
|
|
26
|
-
if import_file.name != expected_filename
|
|
27
|
-
warn "- #{file.name} imports #{expected_filename}, but that import was loaded as #{import_file.name}"
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
warn "Each proto file must use a consistent fully-qualified name."
|
|
31
|
-
warn "This will become an error in the next major version."
|
|
32
|
-
end
|
|
10
|
+
pool = ::Google::Protobuf::DescriptorPool.generated_pool
|
|
11
|
+
pool.add_serialized_file(descriptor_data)
|
|
33
12
|
|
|
34
13
|
module Google
|
|
35
14
|
module Protobuf
|
|
@@ -7,29 +7,8 @@ require 'google/protobuf'
|
|
|
7
7
|
|
|
8
8
|
descriptor_data = "\n\x1fgoogle/protobuf/timestamp.proto\x12\x0fgoogle.protobuf\"+\n\tTimestamp\x12\x0f\n\x07seconds\x18\x01 \x01(\x03\x12\r\n\x05nanos\x18\x02 \x01(\x05\x42\x85\x01\n\x13\x63om.google.protobufB\x0eTimestampProtoP\x01Z2google.golang.org/protobuf/types/known/timestamppb\xf8\x01\x01\xa2\x02\x03GPB\xaa\x02\x1eGoogle.Protobuf.WellKnownTypesb\x06proto3"
|
|
9
9
|
|
|
10
|
-
pool = Google::Protobuf::DescriptorPool.generated_pool
|
|
11
|
-
|
|
12
|
-
begin
|
|
13
|
-
pool.add_serialized_file(descriptor_data)
|
|
14
|
-
rescue TypeError
|
|
15
|
-
# Compatibility code: will be removed in the next major version.
|
|
16
|
-
require 'google/protobuf/descriptor_pb'
|
|
17
|
-
parsed = Google::Protobuf::FileDescriptorProto.decode(descriptor_data)
|
|
18
|
-
parsed.clear_dependency
|
|
19
|
-
serialized = parsed.class.encode(parsed)
|
|
20
|
-
file = pool.add_serialized_file(serialized)
|
|
21
|
-
warn "Warning: Protobuf detected an import path issue while loading generated file #{__FILE__}"
|
|
22
|
-
imports = [
|
|
23
|
-
]
|
|
24
|
-
imports.each do |type_name, expected_filename|
|
|
25
|
-
import_file = pool.lookup(type_name).file_descriptor
|
|
26
|
-
if import_file.name != expected_filename
|
|
27
|
-
warn "- #{file.name} imports #{expected_filename}, but that import was loaded as #{import_file.name}"
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
warn "Each proto file must use a consistent fully-qualified name."
|
|
31
|
-
warn "This will become an error in the next major version."
|
|
32
|
-
end
|
|
10
|
+
pool = ::Google::Protobuf::DescriptorPool.generated_pool
|
|
11
|
+
pool.add_serialized_file(descriptor_data)
|
|
33
12
|
|
|
34
13
|
module Google
|
|
35
14
|
module Protobuf
|
|
@@ -10,31 +10,8 @@ require 'google/protobuf/source_context_pb'
|
|
|
10
10
|
|
|
11
11
|
descriptor_data = "\n\x1agoogle/protobuf/type.proto\x12\x0fgoogle.protobuf\x1a\x19google/protobuf/any.proto\x1a$google/protobuf/source_context.proto\"\xe8\x01\n\x04Type\x12\x0c\n\x04name\x18\x01 \x01(\t\x12&\n\x06\x66ields\x18\x02 \x03(\x0b\x32\x16.google.protobuf.Field\x12\x0e\n\x06oneofs\x18\x03 \x03(\t\x12(\n\x07options\x18\x04 \x03(\x0b\x32\x17.google.protobuf.Option\x12\x36\n\x0esource_context\x18\x05 \x01(\x0b\x32\x1e.google.protobuf.SourceContext\x12\'\n\x06syntax\x18\x06 \x01(\x0e\x32\x17.google.protobuf.Syntax\x12\x0f\n\x07\x65\x64ition\x18\x07 \x01(\t\"\xd5\x05\n\x05\x46ield\x12)\n\x04kind\x18\x01 \x01(\x0e\x32\x1b.google.protobuf.Field.Kind\x12\x37\n\x0b\x63\x61rdinality\x18\x02 \x01(\x0e\x32\".google.protobuf.Field.Cardinality\x12\x0e\n\x06number\x18\x03 \x01(\x05\x12\x0c\n\x04name\x18\x04 \x01(\t\x12\x10\n\x08type_url\x18\x06 \x01(\t\x12\x13\n\x0boneof_index\x18\x07 \x01(\x05\x12\x0e\n\x06packed\x18\x08 \x01(\x08\x12(\n\x07options\x18\t \x03(\x0b\x32\x17.google.protobuf.Option\x12\x11\n\tjson_name\x18\n \x01(\t\x12\x15\n\rdefault_value\x18\x0b \x01(\t\"\xc8\x02\n\x04Kind\x12\x10\n\x0cTYPE_UNKNOWN\x10\x00\x12\x0f\n\x0bTYPE_DOUBLE\x10\x01\x12\x0e\n\nTYPE_FLOAT\x10\x02\x12\x0e\n\nTYPE_INT64\x10\x03\x12\x0f\n\x0bTYPE_UINT64\x10\x04\x12\x0e\n\nTYPE_INT32\x10\x05\x12\x10\n\x0cTYPE_FIXED64\x10\x06\x12\x10\n\x0cTYPE_FIXED32\x10\x07\x12\r\n\tTYPE_BOOL\x10\x08\x12\x0f\n\x0bTYPE_STRING\x10\t\x12\x0e\n\nTYPE_GROUP\x10\n\x12\x10\n\x0cTYPE_MESSAGE\x10\x0b\x12\x0e\n\nTYPE_BYTES\x10\x0c\x12\x0f\n\x0bTYPE_UINT32\x10\r\x12\r\n\tTYPE_ENUM\x10\x0e\x12\x11\n\rTYPE_SFIXED32\x10\x0f\x12\x11\n\rTYPE_SFIXED64\x10\x10\x12\x0f\n\x0bTYPE_SINT32\x10\x11\x12\x0f\n\x0bTYPE_SINT64\x10\x12\"t\n\x0b\x43\x61rdinality\x12\x17\n\x13\x43\x41RDINALITY_UNKNOWN\x10\x00\x12\x18\n\x14\x43\x41RDINALITY_OPTIONAL\x10\x01\x12\x18\n\x14\x43\x41RDINALITY_REQUIRED\x10\x02\x12\x18\n\x14\x43\x41RDINALITY_REPEATED\x10\x03\"\xdf\x01\n\x04\x45num\x12\x0c\n\x04name\x18\x01 \x01(\t\x12-\n\tenumvalue\x18\x02 \x03(\x0b\x32\x1a.google.protobuf.EnumValue\x12(\n\x07options\x18\x03 \x03(\x0b\x32\x17.google.protobuf.Option\x12\x36\n\x0esource_context\x18\x04 \x01(\x0b\x32\x1e.google.protobuf.SourceContext\x12\'\n\x06syntax\x18\x05 \x01(\x0e\x32\x17.google.protobuf.Syntax\x12\x0f\n\x07\x65\x64ition\x18\x06 \x01(\t\"S\n\tEnumValue\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0e\n\x06number\x18\x02 \x01(\x05\x12(\n\x07options\x18\x03 \x03(\x0b\x32\x17.google.protobuf.Option\";\n\x06Option\x12\x0c\n\x04name\x18\x01 \x01(\t\x12#\n\x05value\x18\x02 \x01(\x0b\x32\x14.google.protobuf.Any*C\n\x06Syntax\x12\x11\n\rSYNTAX_PROTO2\x10\x00\x12\x11\n\rSYNTAX_PROTO3\x10\x01\x12\x13\n\x0fSYNTAX_EDITIONS\x10\x02\x42{\n\x13\x63om.google.protobufB\tTypeProtoP\x01Z-google.golang.org/protobuf/types/known/typepb\xf8\x01\x01\xa2\x02\x03GPB\xaa\x02\x1eGoogle.Protobuf.WellKnownTypesb\x06proto3"
|
|
12
12
|
|
|
13
|
-
pool = Google::Protobuf::DescriptorPool.generated_pool
|
|
14
|
-
|
|
15
|
-
begin
|
|
16
|
-
pool.add_serialized_file(descriptor_data)
|
|
17
|
-
rescue TypeError
|
|
18
|
-
# Compatibility code: will be removed in the next major version.
|
|
19
|
-
require 'google/protobuf/descriptor_pb'
|
|
20
|
-
parsed = Google::Protobuf::FileDescriptorProto.decode(descriptor_data)
|
|
21
|
-
parsed.clear_dependency
|
|
22
|
-
serialized = parsed.class.encode(parsed)
|
|
23
|
-
file = pool.add_serialized_file(serialized)
|
|
24
|
-
warn "Warning: Protobuf detected an import path issue while loading generated file #{__FILE__}"
|
|
25
|
-
imports = [
|
|
26
|
-
["google.protobuf.SourceContext", "google/protobuf/source_context.proto"],
|
|
27
|
-
["google.protobuf.Any", "google/protobuf/any.proto"],
|
|
28
|
-
]
|
|
29
|
-
imports.each do |type_name, expected_filename|
|
|
30
|
-
import_file = pool.lookup(type_name).file_descriptor
|
|
31
|
-
if import_file.name != expected_filename
|
|
32
|
-
warn "- #{file.name} imports #{expected_filename}, but that import was loaded as #{import_file.name}"
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
warn "Each proto file must use a consistent fully-qualified name."
|
|
36
|
-
warn "This will become an error in the next major version."
|
|
37
|
-
end
|
|
13
|
+
pool = ::Google::Protobuf::DescriptorPool.generated_pool
|
|
14
|
+
pool.add_serialized_file(descriptor_data)
|
|
38
15
|
|
|
39
16
|
module Google
|
|
40
17
|
module Protobuf
|
|
@@ -7,29 +7,8 @@ require 'google/protobuf'
|
|
|
7
7
|
|
|
8
8
|
descriptor_data = "\n\x1egoogle/protobuf/wrappers.proto\x12\x0fgoogle.protobuf\"\x1c\n\x0b\x44oubleValue\x12\r\n\x05value\x18\x01 \x01(\x01\"\x1b\n\nFloatValue\x12\r\n\x05value\x18\x01 \x01(\x02\"\x1b\n\nInt64Value\x12\r\n\x05value\x18\x01 \x01(\x03\"\x1c\n\x0bUInt64Value\x12\r\n\x05value\x18\x01 \x01(\x04\"\x1b\n\nInt32Value\x12\r\n\x05value\x18\x01 \x01(\x05\"\x1c\n\x0bUInt32Value\x12\r\n\x05value\x18\x01 \x01(\r\"\x1a\n\tBoolValue\x12\r\n\x05value\x18\x01 \x01(\x08\"\x1c\n\x0bStringValue\x12\r\n\x05value\x18\x01 \x01(\t\"\x1b\n\nBytesValue\x12\r\n\x05value\x18\x01 \x01(\x0c\x42\x83\x01\n\x13\x63om.google.protobufB\rWrappersProtoP\x01Z1google.golang.org/protobuf/types/known/wrapperspb\xf8\x01\x01\xa2\x02\x03GPB\xaa\x02\x1eGoogle.Protobuf.WellKnownTypesb\x06proto3"
|
|
9
9
|
|
|
10
|
-
pool = Google::Protobuf::DescriptorPool.generated_pool
|
|
11
|
-
|
|
12
|
-
begin
|
|
13
|
-
pool.add_serialized_file(descriptor_data)
|
|
14
|
-
rescue TypeError
|
|
15
|
-
# Compatibility code: will be removed in the next major version.
|
|
16
|
-
require 'google/protobuf/descriptor_pb'
|
|
17
|
-
parsed = Google::Protobuf::FileDescriptorProto.decode(descriptor_data)
|
|
18
|
-
parsed.clear_dependency
|
|
19
|
-
serialized = parsed.class.encode(parsed)
|
|
20
|
-
file = pool.add_serialized_file(serialized)
|
|
21
|
-
warn "Warning: Protobuf detected an import path issue while loading generated file #{__FILE__}"
|
|
22
|
-
imports = [
|
|
23
|
-
]
|
|
24
|
-
imports.each do |type_name, expected_filename|
|
|
25
|
-
import_file = pool.lookup(type_name).file_descriptor
|
|
26
|
-
if import_file.name != expected_filename
|
|
27
|
-
warn "- #{file.name} imports #{expected_filename}, but that import was loaded as #{import_file.name}"
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
warn "Each proto file must use a consistent fully-qualified name."
|
|
31
|
-
warn "This will become an error in the next major version."
|
|
32
|
-
end
|
|
10
|
+
pool = ::Google::Protobuf::DescriptorPool.generated_pool
|
|
11
|
+
pool.add_serialized_file(descriptor_data)
|
|
33
12
|
|
|
34
13
|
module Google
|
|
35
14
|
module Protobuf
|
data/lib/google/protobuf.rb
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
# require mixins before we hook them into the java & c code
|
|
9
9
|
require 'google/protobuf/message_exts'
|
|
10
|
-
require 'google/protobuf/object_cache'
|
|
10
|
+
require 'google/protobuf/internal/object_cache'
|
|
11
11
|
|
|
12
12
|
# We define these before requiring the platform-specific modules.
|
|
13
13
|
# That way the module init can grab references to these.
|
data/lib/google/protobuf_ffi.rb
CHANGED
|
@@ -15,13 +15,14 @@ require 'google/protobuf/ffi/descriptor'
|
|
|
15
15
|
require 'google/protobuf/ffi/enum_descriptor'
|
|
16
16
|
require 'google/protobuf/ffi/field_descriptor'
|
|
17
17
|
require 'google/protobuf/ffi/oneof_descriptor'
|
|
18
|
-
require 'google/protobuf/ffi/
|
|
18
|
+
require 'google/protobuf/ffi/method_descriptor'
|
|
19
|
+
require 'google/protobuf/ffi/service_descriptor'
|
|
19
20
|
require 'google/protobuf/ffi/file_descriptor'
|
|
21
|
+
require 'google/protobuf/ffi/descriptor_pool'
|
|
20
22
|
require 'google/protobuf/ffi/map'
|
|
21
23
|
require 'google/protobuf/ffi/object_cache'
|
|
22
24
|
require 'google/protobuf/ffi/repeated_field'
|
|
23
25
|
require 'google/protobuf/ffi/message'
|
|
24
|
-
require 'google/protobuf/descriptor_dsl'
|
|
25
26
|
|
|
26
27
|
module Google
|
|
27
28
|
module Protobuf
|
|
@@ -41,10 +42,11 @@ module Google
|
|
|
41
42
|
def self.discard_unknown(message)
|
|
42
43
|
raise FrozenError if message.frozen?
|
|
43
44
|
raise ArgumentError.new "Expected message, got #{message.class} instead." if message.instance_variable_get(:@msg).nil?
|
|
44
|
-
|
|
45
|
+
pool_def = message.class.descriptor.instance_variable_get(:@descriptor_pool).descriptor_pool
|
|
46
|
+
unless Google::Protobuf::FFI.message_discard_unknown(message.instance_variable_get(:@msg), message.class.descriptor, pool_def, 128)
|
|
45
47
|
raise RuntimeError.new "Messages nested too deeply."
|
|
46
48
|
end
|
|
47
49
|
nil
|
|
48
50
|
end
|
|
49
51
|
end
|
|
50
|
-
end
|
|
52
|
+
end
|