/// <summary> /// Read an ECMA array. /// </summary> /// <remarks> /// Type declaration: /// <c>associative-count = U32 /// ecma-array-type = associative-count *(object-property)</c> /// </remarks> private void ReadEcmaArray(AmfContext context, AmfStreamReader reader, XmlWriter output = null) { context.References.Track(); reader.ReadUInt32(); //Read properties count ReadObject(context, reader, output); }
/// <summary> /// Read a strict array. /// </summary> /// <remarks> /// Type declaration: /// <c>array-count = U32 /// strict-array-type = array-count *(value-type)</c> /// </remarks> private void ReadStrictArray(AmfContext context, AmfStreamReader reader, XmlWriter output = null) { context.References.Track(); var length = reader.ReadUInt32(); if (output != null) { output.WriteStartElement(AmfxContent.Array); output.WriteAttributeString(AmfxContent.ArrayLength, length.ToString()); } for (var i = 0; i < length; i++) ReadAmfValue(context, reader, output); if (output != null) output.WriteEndElement(); }
/// <summary> /// Read a long string. /// </summary> /// <remarks> /// Type declaration: /// <c>long-string-type = long-string-marker UTF-8-long</c> /// </remarks> private static string ReadLongString(AmfStreamReader reader, XmlWriter output = null) { //First 32 bits represents long string's (UTF-8-long) length in bytes var length = reader.ReadUInt32(); var value = ReadUtf8(reader, length); if (output != null) { output.WriteStartElement(AmfxContent.String); output.WriteValue(value); output.WriteEndElement(); } return value; }