class Protobuf::Field::MessageField
Public Instance Methods
acceptable?(val)
click to toggle source
Public Instance Methods
# File lib/protobuf/field/message_field.rb, line 11 def acceptable?(val) val.is_a?(type_class) || val.respond_to?(:to_hash) || val.respond_to?(:to_proto) end
coerce!(value)
click to toggle source
# File lib/protobuf/field/message_field.rb, line 33 def coerce!(value) return nil if value.nil? coerced_value = if value.respond_to?(:to_proto) value.to_proto elsif value.respond_to?(:to_hash) type_class.new(value.to_hash) else value end return coerced_value if coerced_value.is_a?(type_class) fail TypeError, "Expected value of type '#{type_class}' for field #{name}, but got '#{value.class}'" end
decode(bytes)
click to toggle source
# File lib/protobuf/field/message_field.rb, line 15 def decode(bytes) type_class.decode(bytes) end
encode(value)
click to toggle source
# File lib/protobuf/field/message_field.rb, line 19 def encode(value) bytes = value.encode result = ::Protobuf::Field::VarintField.encode(bytes.size) result << bytes end
message?()
click to toggle source
# File lib/protobuf/field/message_field.rb, line 25 def message? true end
wire_type()
click to toggle source
# File lib/protobuf/field/message_field.rb, line 29 def wire_type ::Protobuf::WireType::LENGTH_DELIMITED end