CSharpRTMP.Core.Protocols.Rtmfp.MiddleHandshake.SendStream C# (CSharp) Method

SendStream() public method

public SendStream ( Stream stream, int length ) : void
stream Stream
length int
return void
        public override void SendStream(Stream stream,int length)
        {
            var marker = stream.ReadByte() | 0xF0;
            var echoTime = marker == (Target == null ? 0xFE : 0xFD);
            stream.ReadUShort();
            if (echoTime) stream.ReadUShort();
            var type = stream.ReadByte();
            if (type == 0x10)
            {
                var sizePos = stream.Position;
                var size = stream.ReadUShort();
                var flags = stream.ReadByte();
                var idFlow = stream.Read7BitLongValue();
                var stage = stream.Read7BitLongValue();
                if (idFlow == 2 && stage == 1)
                {
                    var deltaNAck = stream.Read7BitLongValue();
                    var len = (ushort) stream.ReadByte();
                    stream.Position += len;
                    stream.ReadByte();
                    stream.ReadByte();//type
                    stream.ReadUInt();//timestamp
                    var amfReader = new AMF0Reader(stream);
                    var str = amfReader.ReadShortString(true);
                    var num = amfReader.ReadAMFDouble(true);
                    var pos = stream.Position;
                    var connectionInfo = amfReader.ReadVariant();
                    connectionInfo["tcUrl"] = MiddleSession.QueryUrl;
                    connectionInfo["app"] = MiddleSession.QueryUrl.Split('/').Last();
                    stream.Position = pos;
                    var amfWriter = new AMF0Writer(stream);
                    amfWriter.WriteObject(connectionInfo, true);
                    length = (int) stream.Position;
                    len = (ushort) (stream.Position - sizePos-2);
                    stream.Position = sizePos;
                    stream.Write(len);
                }
            }
            stream.Position = 6;
            base.SendStream(stream,length);
        }
    }