X11ForwardingRequestInfo
Represents "x11-req" type channel request information.
            
                using Renci.SshNet.Common;
namespace Renci.SshNet.Messages.Connection
{
    internal sealed class X11ForwardingRequestInfo : RequestInfo
    {
        private byte[] _authenticationProtocol;
        public const string Name = "x11-req";
        public override string RequestName => "x11-req";
        public bool IsSingleConnection { get; set; }
        public string AuthenticationProtocol {
            get {
                return SshData.Ascii.GetString(_authenticationProtocol, 0, _authenticationProtocol.Length);
            }
            private set {
                _authenticationProtocol = SshData.Ascii.GetBytes(value);
            }
        }
        public byte[] AuthenticationCookie { get; set; }
        public uint ScreenNumber { get; set; }
        protected override int BufferCapacity => base.BufferCapacity + 1 + 4 + _authenticationProtocol.Length + 4 + AuthenticationCookie.Length + 4;
        public X11ForwardingRequestInfo()
        {
            base.WantReply = true;
        }
        public X11ForwardingRequestInfo(bool isSingleConnection, string protocol, byte[] cookie, uint screenNumber)
            : this()
        {
            IsSingleConnection = isSingleConnection;
            AuthenticationProtocol = protocol;
            AuthenticationCookie = cookie;
            ScreenNumber = screenNumber;
        }
        protected override void LoadData()
        {
            base.LoadData();
            IsSingleConnection = ReadBoolean();
            _authenticationProtocol = ReadBinary();
            AuthenticationCookie = ReadBinary();
            ScreenNumber = ReadUInt32();
        }
        protected override void SaveData()
        {
            base.SaveData();
            Write(IsSingleConnection);
            WriteBinaryString(_authenticationProtocol);
            WriteBinaryString(AuthenticationCookie);
            Write(ScreenNumber);
        }
    }
}