Example #1
0
File: Tag.cs Project: nguyenbs/as3c
        public void WriteExternal(BinaryWriter output)
        {
            if (0x52 == _header.Type)//DoABC
            {
                DoABC abcBody = (DoABC)_body;

                MemoryStream buffer    = new MemoryStream();
                BinaryWriter bufferOut = new BinaryWriter(buffer, Encoding.UTF8);

                // Part 1: Write .abc to buffer
                abcBody.WriteExternal(bufferOut);

                // Part 2: Update and write header
                _header.Length = (int)buffer.Length;
                _header.WriteExternal(output);

                // Part 3: Copy .abc buffer into output
                buffer.Seek(0, SeekOrigin.Begin);

                byte[] bb = new byte[1024];
                int    len;

                while ((len = buffer.Read(bb, 0, 1024)) > 0)
                {
                    output.Write(bb, 0, len);
                }
            }
            else
            {
                // Other tags can be written very simple
                _header.WriteExternal(output);
                _body.WriteExternal(output);
            }
        }