3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
# File 'lib/protobuf/encoder.rb', line 3
def self.encode(message, stream)
message.each_field_for_serialization do |field, value|
if field.repeated?
if field.packed?
packed_value = value.map { |val| field.encode(val) }.join
stream << "#{field.tag_encoded}#{::Protobuf::Field::VarintField.encode(packed_value.size)}#{packed_value}"
else
value.each do |val|
stream << "#{field.tag_encoded}#{field.encode(val)}"
end
end
else
stream << "#{field.tag_encoded}#{field.encode(value)}"
end
end
stream
end
|