CSharpRTMP.Core.Protocols.WebRtc.WebSocketProtocol.EnqueueForOutbound C# (CSharp) Метод

EnqueueForOutbound() публичный Метод

public EnqueueForOutbound ( MemoryStream outputStream, int offset ) : bool
outputStream System.IO.MemoryStream
offset int
Результат bool
        public override bool EnqueueForOutbound(MemoryStream outputStream, int offset = 0)
        {
            if (IsHandShaked)
            {
                outputStream.Position = offset;
                var len = (int)outputStream.GetAvaliableByteCounts();
                byte[] content =  new byte[len];
                outputStream.Read(content, 0, len);
                if (IsUTF8String)
                {
                    content = Encoding.UTF8.GetBytes(content.Select(x=>(char)x).ToArray());
                    len = content.Length;
                }
                outputStream.IgnoreAll();
                if (len < 126)
                {
                    outputStream.WriteByte((byte) (IsUTF8String ? 0x81 : 0x82));
                    outputStream.WriteByte((byte)content.Length);
                }
                else if (len < 0xFFFF)
                {
                    outputStream.WriteByte((byte)(IsUTF8String ? 0x81 : 0x82));
                    outputStream.WriteByte(126);
                    outputStream.WriteByte((byte)(content.Length >> 8));
                    outputStream.WriteByte((byte)content.Length);
                }
                else
                {
                    outputStream.WriteByte((byte)(IsUTF8String ? 0x81 : 0x82));
                    outputStream.WriteByte(127);
                    for (var i = 63; i >= 0; i -= 8)
                    {
                        outputStream.WriteByte((byte)(content.Length >> i));
                    }
                }
                outputStream.Write(content, 0, content.Length);
                return base.EnqueueForOutbound(outputStream, 0);
            }
            
            return base.EnqueueForOutbound(outputStream, offset);
        }