Module: RocketAMF::Pure::Request
Overview
Request deserialization module - provides a method that can be included into RocketAMF::Request for deserializing the given stream.
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
Instance Method Details
#populate_from_stream(stream) ⇒ Object
8 9 10 11 12 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 |
# File 'lib/rocketamf/pure/remoting.rb', line 8 def populate_from_stream stream stream = StringIO.new(stream) unless StringIO === stream # Initialize @amf_version = 0 @headers = [] @messages = [] # Read AMF version @amf_version = read_word16_network stream # Read in headers header_count = read_word16_network stream 0.upto(header_count-1) do name = stream.read(read_word16_network(stream)) must_understand = read_int8(stream) != 0 length = read_word32_network stream data = RocketAMF.deserialize stream @headers << RocketAMF::Header.new(name, must_understand, data) end # Read in messages = read_word16_network stream 0.upto(-1) do target_uri = stream.read(read_word16_network(stream)) response_uri = stream.read(read_word16_network(stream)) length = read_word32_network stream data = RocketAMF.deserialize stream if data.is_a?(Array) && data.length == 1 && data[0].is_a?(::RocketAMF::Values::AbstractMessage) data = data[0] end @messages << RocketAMF::Message.new(target_uri, response_uri, data) end self end |