| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- namespace Renci.SshNet.Messages.Transport
- {
- /// <summary>
- /// Represents SSH_MSG_DISCONNECT message.
- /// </summary>
- [Message("SSH_MSG_DISCONNECT", 1)]
- public class DisconnectMessage : Message, IKeyExchangedAllowed
- {
- private byte[] _description;
- private byte[] _language;
- /// <summary>
- /// Gets disconnect reason code.
- /// </summary>
- public DisconnectReason ReasonCode { get; private set; }
- /// <summary>
- /// Gets disconnect description.
- /// </summary>
- public string Description
- {
- get { return Utf8.GetString(_description, 0, _description.Length); }
- private set { _description = Utf8.GetBytes(value); }
- }
- /// <summary>
- /// Gets message language.
- /// </summary>
- public string Language
- {
- get { return Utf8.GetString(_language, 0, _language.Length); }
- private set { _language = Utf8.GetBytes(value); }
- }
- /// <summary>
- /// Gets the size of the message in bytes.
- /// </summary>
- /// <value>
- /// The size of the messages in bytes.
- /// </value>
- protected override int BufferCapacity
- {
- get
- {
- var capacity = base.BufferCapacity;
- capacity += 4; // ReasonCode
- capacity += 4; // Description length
- capacity += _description.Length; // Description
- capacity += 4; // Language length
- capacity += _language.Length; // Language
- return capacity;
- }
- }
- /// <summary>
- /// Initializes a new instance of the <see cref="DisconnectMessage"/> class.
- /// </summary>
- public DisconnectMessage()
- {
- }
- /// <summary>
- /// Initializes a new instance of the <see cref="DisconnectMessage"/> class.
- /// </summary>
- /// <param name="reasonCode">The reason code.</param>
- /// <param name="message">The message.</param>
- public DisconnectMessage(DisconnectReason reasonCode, string message)
- {
- ReasonCode = reasonCode;
- Description = message;
- Language = "en";
- }
- /// <summary>
- /// Called when type specific data need to be loaded.
- /// </summary>
- protected override void LoadData()
- {
- ReasonCode = (DisconnectReason) ReadUInt32();
- _description = ReadBinary();
- _language = ReadBinary();
- }
- /// <summary>
- /// Called when type specific data need to be saved.
- /// </summary>
- protected override void SaveData()
- {
- Write((uint) ReasonCode);
- WriteBinaryString(_description);
- WriteBinaryString(_language);
- }
- internal override void Process(Session session)
- {
- session.OnDisconnectReceived(this);
- }
- }
- }
|