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