Class: Protobuf::Encoder
- Inherits:
-
Object
- Object
- Protobuf::Encoder
- Defined in:
- lib/protobuf/message/encoder.rb
Class Method Summary collapse
Instance Method Summary collapse
- #encode(stream = @stream, message = @message) ⇒ Object
-
#initialize(stream = nil, message = nil) ⇒ Encoder
constructor
A new instance of Encoder.
- #write_pair(field, value, stream) ⇒ Object
Constructor Details
#initialize(stream = nil, message = nil) ⇒ Encoder
Returns a new instance of Encoder.
13 14 15 |
# File 'lib/protobuf/message/encoder.rb', line 13 def initialize(stream=nil, =nil) @stream, @message = stream, end |
Class Method Details
.encode(stream, message) ⇒ Object
8 9 10 |
# File 'lib/protobuf/message/encoder.rb', line 8 def encode(stream, ) self.new(stream, ).encode end |
Instance Method Details
#encode(stream = @stream, message = @message) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/protobuf/message/encoder.rb', line 17 def encode(stream=@stream, =@message) raise NotInitializedError unless .initialized? .each_field do |field, value| next unless .has_field?(field.name) if field.repeated? value.each do |val| write_pair field, val, stream end else write_pair field, value, stream end end end |
#write_pair(field, value, stream) ⇒ Object
32 33 34 35 36 37 38 |
# File 'lib/protobuf/message/encoder.rb', line 32 def write_pair(field, value, stream) key = (field.tag << 3) | field.wire_type key_bytes = Protobuf::Field::VarintField.encode key stream.write key_bytes bytes = field.get value stream.write bytes end |