namespace Renci.SshNet.Messages.Connection
{
    /// 
    /// Represents SSH_MSG_CHANNEL_EXTENDED_DATA message.
    /// 
    [Message("SSH_MSG_CHANNEL_EXTENDED_DATA", 95)]
    public class ChannelExtendedDataMessage : ChannelMessage
    {
        /// 
        /// Gets message data type code.
        /// 
        public uint DataTypeCode { get; private set; }
        /// 
        /// Gets message data.
        /// 
        public byte[] Data { get; private set; }
        /// 
        /// Initializes a new instance of the  class.
        /// 
        public ChannelExtendedDataMessage()
        {
        }
        /// 
        /// Initializes a new instance of the  class.
        /// 
        /// The local channel number.
        /// The message data type code.
        /// The message data.
        public ChannelExtendedDataMessage(uint localChannelNumber, uint dataTypeCode, byte[] data)
        {
            this.LocalChannelNumber = localChannelNumber;
            this.DataTypeCode = dataTypeCode;
            this.Data = data;
        }
        /// 
        /// Loads the data.
        /// 
        protected override void LoadData()
        {
            base.LoadData();
            this.DataTypeCode = this.ReadUInt32();
            this.Data = this.ReadBinaryString();
        }
        /// 
        /// Saves the data.
        /// 
        protected override void SaveData()
        {
            base.SaveData();
            this.Write(this.DataTypeCode);
            this.WriteBinaryString(this.Data);
        }
    }
}