Sha256: f98eedf178c1aec4b71359e8a90066580b7a430ed3970745979528d9a18b4139

Contents?: true

Size: 937 Bytes

Versions: 9

Compression:

Stored size: 937 Bytes

Contents

require 'protobuf/wire_type'

module Protobuf
  module Field
    class BytesField < BaseField
      BYTES_ENCODING = "ASCII-8BIT".freeze

      def self.default
        ''
      end

      def acceptable?(val)
        if val.nil? || val.is_a?(::Protobuf::Message) || val.instance_of?(String)
          return true
        else
          raise TypeError, "Cannot set field : #{name} to value : #{val}"
        end
      end

      def decode(bytes)
        bytes.force_encoding(::Protobuf::Field::BytesField::BYTES_ENCODING) 
        bytes
      end

      def encode(value)
        value = value.serialize_to_string if value.is_a?(::Protobuf::Message)
        value.force_encoding(::Protobuf::Field::BytesField::BYTES_ENCODING) 

        string_size = ::Protobuf::Field::VarintField.encode(value.size)
        string_size << value
      end

      def wire_type
        ::Protobuf::WireType::LENGTH_DELIMITED
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
protobuf-2.4.7-java lib/protobuf/field/bytes_field.rb
protobuf-2.4.7 lib/protobuf/field/bytes_field.rb
protobuf-2.4.6 lib/protobuf/field/bytes_field.rb
protobuf-2.4.5-java lib/protobuf/field/bytes_field.rb
protobuf-2.4.5 lib/protobuf/field/bytes_field.rb
protobuf-2.4.4-java lib/protobuf/field/bytes_field.rb
protobuf-2.4.4 lib/protobuf/field/bytes_field.rb
protobuf-2.4.3-java lib/protobuf/field/bytes_field.rb
protobuf-2.4.3 lib/protobuf/field/bytes_field.rb