Class: AMF::Pure::Deserializer

Inherits:
Object
  • Object
show all
Includes:
ReadIOHelpers
Defined in:
lib/amf/pure/deserializer.rb

Overview

Pure ruby deserializer – AMF0 deserializer, it switches over to AMF3 when it sees the switch flag

Instance Method Summary collapse

Methods included from ReadIOHelpers

#byte_order, #byte_order_little?, #read_double, #read_int16_network, #read_int8, #read_word16_network, #read_word32_network, #read_word8

Constructor Details

#initializeDeserializer

Returns a new instance of Deserializer.



9
10
11
# File 'lib/amf/pure/deserializer.rb', line 9

def initialize
  @ref_cache = []
end

Instance Method Details

#deserialize(source, type = nil) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/amf/pure/deserializer.rb', line 13

def deserialize(source, type=nil)
  source = StringIO.new(source) unless StringIO === source
  type = read_int8 source unless type
  case type
  when AMF0_NUMBER_MARKER
    read_number source
  when AMF0_BOOLEAN_MARKER
    read_boolean source
  when AMF0_STRING_MARKER
    read_string source
  when AMF0_OBJECT_MARKER
    read_object source
  when AMF0_NULL_MARKER
    nil
  when AMF0_UNDEFINED_MARKER
    nil
  when AMF0_REFERENCE_MARKER
    read_reference source
  when AMF0_HASH_MARKER
    read_hash source
  when AMF0_STRICT_ARRAY_MARKER
    read_array source
  when AMF0_DATE_MARKER
    read_date source
  when AMF0_LONG_STRING_MARKER
    read_string source, true
  when AMF0_UNSUPPORTED_MARKER
    nil
  when AMF0_XML_MARKER
    #read_xml source
  when AMF0_TYPED_OBJECT_MARKER
    read_typed_object source
  when AMF0_AMF3_MARKER
    AMF3Deserializer.new.deserialize(source)
  end
end