class RLP::Sedes::Binary

Constants

Infinity

Public Class Methods

fixed_length(l, allow_empty: false) click to toggle source
# File lib/rlp/sedes/binary.rb, line 11
def fixed_length(l, allow_empty: false)
  new(min_length: l, max_length: l, allow_empty: allow_empty)
end
new(min_length: 0, max_length: Infinity, allow_empty: false) click to toggle source
# File lib/rlp/sedes/binary.rb, line 20
def initialize(min_length: 0, max_length: Infinity, allow_empty: false)
  @min_length = min_length
  @max_length = max_length
  @allow_empty = allow_empty
end
valid_type?(obj) click to toggle source
# File lib/rlp/sedes/binary.rb, line 15
def valid_type?(obj)
  obj.instance_of?(String)
end

Public Instance Methods

deserialize(serial) click to toggle source
# File lib/rlp/sedes/binary.rb, line 35
def deserialize(serial)
  raise DeserializationError.new("Objects of type #{serial.class} cannot be deserialized", serial) unless primitive?(serial)
  raise DeserializationError.new("#{serial.class} has invalid length", serial) unless valid_length?(serial.size)

  serial
end
serialize(obj) click to toggle source
# File lib/rlp/sedes/binary.rb, line 26
def serialize(obj)
  raise SerializationError.new("Object is not a serializable (#{obj.class})", obj) unless self.class.valid_type?(obj)

  serial = str_to_bytes obj
  raise SerializationError.new("Object has invalid length", serial) unless valid_length?(serial.size)

  serial
end

Private Instance Methods

valid_length?(len) click to toggle source
# File lib/rlp/sedes/binary.rb, line 44
def valid_length?(len)
  (@min_length <= len && len <= @max_length) ||
    (@allow_empty && len == 0)
end