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