| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 | namespace Renci.SshNet.Messages.Connection{    /// <summary>    /// Represents "subsystem" type channel request information    /// </summary>    internal class SubsystemRequestInfo : RequestInfo    {        private byte[] _subsystemName;        /// <summary>        /// Channel request name        /// </summary>        public const string Name = "subsystem";        /// <summary>        /// Gets the name of the request.        /// </summary>        /// <value>        /// The name of the request.        /// </value>        public override string RequestName        {            get { return Name; }        }        /// <summary>        /// Gets the name of the subsystem.        /// </summary>        /// <value>        /// The name of the subsystem.        /// </value>        public string SubsystemName        {            get { return Ascii.GetString(_subsystemName, 0, _subsystemName.Length); }            private set { _subsystemName = Ascii.GetBytes(value); }        }        protected override int BufferCapacity        {            get            {                var capacity = base.BufferCapacity;                capacity += 4; // SubsystemName length                capacity += _subsystemName.Length; // SubsystemName                return capacity;            }        }        /// <summary>        /// Initializes a new instance of the <see cref="SubsystemRequestInfo"/> class.        /// </summary>        public SubsystemRequestInfo()        {            WantReply = true;        }        /// <summary>        /// Initializes a new instance of the <see cref="SubsystemRequestInfo"/> class.        /// </summary>        /// <param name="subsystem">The subsystem.</param>        public SubsystemRequestInfo(string subsystem)            : this()        {            SubsystemName = subsystem;        }        /// <summary>        /// Called when type specific data need to be loaded.        /// </summary>        protected override void LoadData()        {            base.LoadData();            _subsystemName = ReadBinary();        }        /// <summary>        /// Called when type specific data need to be saved.        /// </summary>        protected override void SaveData()        {            base.SaveData();            WriteBinaryString(_subsystemName);        }    }}
 |