class SerizableVariable
Represents a Serialized var
Attributes
flag[RW]
modifier[R]
modifier_size[R]
name[R]
size[R]
type[R]
value[R]
Public Class Methods
new(var)
click to toggle source
Initialize a SteamSerializable
from a hash
# File lib/steamd/generator/ruby/serializable_variable.rb, line 9 def initialize(var) @name = var[:name] @value = var[:value] @modifier = var[:modifier] @modifier_size = var[:modifier_size] @type = Type.new(var[:type]) end
Public Instance Methods
deserialize(io)
click to toggle source
Serialize the object
@param io [:read]
# File lib/steamd/generator/ruby/serializable_variable.rb, line 31 def deserialize(io) @value = if type.primitive? deserialize_primitive(io) elsif type.encodable? deserialize_encodable(io) else deserialize_object(io) end end
serialize()
click to toggle source
Serialize the object
# File lib/steamd/generator/ruby/serializable_variable.rb, line 18 def serialize if type.primitive? serialize_primitive elsif type.encodable? serialize_encodable else serialize_object end end
Private Instance Methods
deserialize_encodable(io)
click to toggle source
@api private
# File lib/steamd/generator/ruby/serializable_variable.rb, line 50 def deserialize_encodable(io) raise NotImplementedError if flag.nil? || modifier_size.nil? type.klass.decode(io.read(flag.value)) end
deserialize_object(io)
click to toggle source
@api private
# File lib/steamd/generator/ruby/serializable_variable.rb, line 44 def deserialize_object(io) type = Type.new(self.type.klass::DATA_TYPE) io.read(type.bytesize).unpack(type.bytedirective).first end
deserialize_primitive(io)
click to toggle source
@api private
# File lib/steamd/generator/ruby/serializable_variable.rb, line 56 def deserialize_primitive(io) io.read(type.bytesize).unpack(type.bytedirective).first end
serialize_encodable()
click to toggle source
@api private
# File lib/steamd/generator/ruby/serializable_variable.rb, line 67 def serialize_encodable raise NotImplementedError unless value.respond_to?(:encode) value.encode end
serialize_object()
click to toggle source
@api private
# File lib/steamd/generator/ruby/serializable_variable.rb, line 61 def serialize_object type = Type.new(self.type.klass::DATA_TYPE) [value].pack(type.bytedirective) end
serialize_primitive()
click to toggle source
@api private
# File lib/steamd/generator/ruby/serializable_variable.rb, line 73 def serialize_primitive if flag [flag.value.encode.length].pack('<l') else [value].pack(type.bytedirective) end end
validate()
click to toggle source
@api private
# File lib/steamd/generator/ruby/serializable_variable.rb, line 82 def validate raise NotImplementedError unless @var[:size].nil? end