class Protobuf::Message
def encode
def encode stream = "" each_field_for_serialization do |field, value| if field.repeated? if field.packed? key = (field.tag << 3) | ::Protobuf::WireType::LENGTH_DELIMITED packed_value = value.map { |val| field.encode(val) }.join stream << ::Protobuf::Field::VarintField.encode(key) stream << ::Protobuf::Field::VarintField.encode(packed_value.size) stream << packed_value else value.each { |val| write_pair(stream, field, val) } end else write_pair(stream, field, value) end end return stream end